这看起来很容易,但我一直在撞头。
我有数字向量 v1
v1 <- c(1,1,3,5,7,7)
Run Code Online (Sandbox Code Playgroud)
我有一个数字向量 v2。v2 始终是 v1 的子集。
我想从 v1 中删除 v2 中的所有元素,但 每个 v2 元素只有一个(并且精确到一个)v1 元素。
期望的输出
如果v2 <- c(3,5)我想c(1,1,7,7)避免 v1. 这个很容易使用v1[-match(v2, v1)]。
如果v2 <- c(1,7)我想c(1,3,5,7)避免 v1. 也,v1[-match(v2, v1)]有诀窍。
如果v2 <- c(1,1)我想c(3,5,7,7)避免 v1. 现在v1[-match(v2, v1)]返回[1] 1 3 5 7 7.. 不是我想要的。
我见过类似的问题,但到目前为止没有一个符合我的需求(至少在我理解的范围内),所以如果这个问题已经得到解答,我会提前道歉。我也是一个 R 新手。
我有一个数据框,每行包含两组纬度/经度。实际数据包含数百行和许多列相关数据。我正在绘制两组纬度/经度的点,并希望将每对点连接为一条单独的线。下面是结果应该是什么样子的示例。
[![在此处输入图像描述][1]][1]
这是数据的简化示例。将有重复的事件和位置值。
Event_lat Event_lon Event Location Location_latitude Location_longitude
40.791151 -124.054008 704832643 60005 40.790961 -124.1825609
38.900882 -122.660353 704653051 60009 38.873889 -122.709722
38.921488 -122.600049 704681147 60011 38.85111099 -122.593333
38.921488 -122.600049 704681147 60011 38.85111099 -122.593333
39.141877 -123.044724 706777142 60012 39.22794396 -123.064722
38.928113 -122.611386 708644013 60016 38.98950003 -122.7695828
39.02361 -122.72195 708582623 60016 38.98950003 -122.7695828
38.87586 -122.842684 708336092 60016 38.98950003 -122.7695828
39.239926 -123.145497 709020144 60017 39.24138798 -123.2163878
39.3307 -123.221674 708875205 60017 39.24138798 -123.2163878
Run Code Online (Sandbox Code Playgroud)
以下是映射点的代码的简化示例:
library(leaflet)
myData <-read.csv("Book1.csv",header=TRUE, sep=",")
leaflet()%>%
addTiles() %>% …Run Code Online (Sandbox Code Playgroud) 假设我有一个包含 6 列的 data.table
library(data.table)
set.seed(123)
dt <- data.table( id = 1:100,
p1 = sample(1:10, 100, replace = TRUE ),
p2 = sample(1:10, 100, replace = TRUE ),
p3 = sample(1:10, 100, replace = TRUE ),
p4 = sample(1:10, 100, replace = TRUE ),
p5 = sample(1:10, 100, replace = TRUE ) )
Run Code Online (Sandbox Code Playgroud)
现在,我想在 p1 - pn 列(此处:p1-p5)上对这个 data.table 进行子集化。我想保留任何p 列包含10.
对于这个小样本data.table,这可以手动完成
test1 <- dt[ p1 == 10 | p2 == 10 | p3 == 10 …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来从另一个数据帧中的一个数据帧中查找信息,从另一个数据帧中获取一个值,并将其传递回第一帧。
示例数据:
我有一个名为“ x”的数据框
x <- structure(list(from = c(1L, 2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L
), to = c(2L, 3L, 4L, 5L, 6L, 2L, 3L, 4L, 5L, 6L), number = c(30,
30, 30, 33, 34, 35, 36, 37, 38, 39), name = c("region 1", "region 2",
"region 3", "region 4", "region 5", "region 6", "region 7", "region 8",
"region 9", "region 10")), .Names = c("from", "to", "number",
"name"), row.names = c(NA, -10L), class = "data.frame")
# from …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作带有“时间标记”的图形。这些时间标记是某些日期的垂直线。时间数据是POSIXct格式。我想使用Plotly的出色交互界面,并在其中使用ggplot对象。
问题是在使用ggplotly()之后,这些“时间标记”没有显示出来。我已经尝试过了,plotly::add_segments()但是没有用。这是两个可复制的示例:
1.使用非POSIXct数据可以正常工作
Run Code Online (Sandbox Code Playgroud)# dummy dataset df2 = data.frame(id = 1:10, measure = runif(10, 0, 20)) events2 = data.frame(number = c(2,3,8)) # ggplot graph p2 = ggplot() + geom_line(data = df2, aes(x = id, y = measure)) + geom_vline(data = events2, aes(xintercept = events2$number), color = "red") p2 # plotly graph that displays the geom_vline properly ggplotly(p2)
2.使用POSIXct时,数据无法显示正确的结果
Run Code Online (Sandbox Code Playgroud)# dummy dataset df = data.frame(date = seq(as.POSIXct("2017-07-01", tz = "UTC", format = "%Y-%m-%d"), as.POSIXct("2018-04-15", tz = "UTC", format = …
目标:按季度和名称分组我希望按计数获得前 n 个名称(请参见下面的示例)。因此,top 1 的所需输出(对于下面的示例)将是:
2019 Q1 Klaus 2
2019 Q2 Karl 3
Run Code Online (Sandbox Code Playgroud)
由于这只是一个简单的示例,因此我还希望获得按季度计数和名称排列的前 4、5 名等。您对如何实现这一点有什么好的想法吗data.table(不,dplyr请)。非常感谢!
library(data.table)
dt <- data.table(x = c("2019 Q1", "2019 Q1", "2019 Q1", "2019 Q2", "2019 Q2", "2019 Q2", "2019 Q2"),
y = c("Klaus", "Gustav", "Klaus", "Karl", "Karl", "Karl", "Stefan"))
# Structure of dt
# x y
# 1: 2019 Q1 Klaus
# 2: 2019 Q1 Gustav
# 3: 2019 Q1 Klaus
# 4: 2019 Q2 Karl
# 5: 2019 Q2 …Run Code Online (Sandbox Code Playgroud) r ×6
data.table ×2
geom-vline ×1
ggplot2 ×1
leaflet ×1
plotly ×1
posixct ×1
python ×1
top-n ×1