无法按时执行滚动连接和data.table中的另一个变量

时间:2018-01-16 00:26:05

标签: r dplyr data.table

我有两个data.tables - 一个有位置快照(df2),另一个有骑行结束时(df1)。我的目标是加入df2上的df1非常大的bike_id,其中时间与最接近的匹配和data.table匹配。我已尝试bike_id中的所有内容,但似乎没有任何效果。

我几乎逐字地this exampletime和最近的sum(is.na(df1$time)) # [1] 0 sum(is.na(df2$time)) # [1] 0 sapply(df1, class) # $time # [1] "POSIXct" "POSIXt" # $bike_id # [1] "integer" sapply(df2, class) # $time # [1] "POSIXct" "POSIXt" # $bike_id # [1] "integer" # $st_x # [1] "numeric" # $st_y # [1] "numeric" all(df1$bike_id %in% df2$bike_id) # [1] TRUE 进行合并,但我最终得到的是空列。

NA

这两个表都没有时间值bike_id,并且两者都包含相同的head(df1) # time bike_id # 1: 2017-12-20 07:29:22 16465 # 2: 2017-12-20 15:34:36 16465 # 3: 2017-12-09 22:08:56 16468 # 4: 2017-12-10 12:38:53 16468 # 5: 2017-12-18 00:19:18 16468 # 6: 2017-12-18 17:29:18 16468 head(df2) # time bike_id st_x st_y # 1: 2017-12-04 16:21:31 16465 -90.07687 29.95264 # 2: 2017-12-04 16:30:05 16465 -90.07687 29.95264 # 3: 2017-12-04 16:40:05 16465 -90.07687 29.95264 # 4: 2017-12-04 16:50:05 16465 -90.07687 29.95264 # 5: 2017-12-04 17:00:06 16465 -90.07687 29.95264 # 6: 2017-12-04 17:10:06 16465 -90.07687 29.95264 s。

例如:

bike_id

我用来匹配time和最近的setkey(df2, time, bike_id)[, dateMatch:=time] test <- df2[df1, roll = 'nearest'] head(test) # time bike_id st_x st_y dateMatch # 1: 2017-12-20 07:29:22 16465 NA NA <NA> # 2: 2017-12-20 15:34:36 16465 NA NA <NA> # 3: 2017-12-09 22:08:56 16468 NA NA <NA> # 4: 2017-12-10 12:38:53 16468 NA NA <NA> # 5: 2017-12-18 00:19:18 16468 NA NA <NA> # 6: 2017-12-18 17:29:18 16468 NA NA <NA> 的代码是:

roll=Inf

关于可能出现什么问题的任何想法?替换NA会产生与roll='nearest' s。

列相同的结果

如果bike_id在两个表中都相同且time从不NA$locale='fr_FR.UTF-8'; setlocale(LC_ALL,$locale); putenv('LC_ALL='.$locale); 是否至少找不到某个日期?

1 个答案:

答案 0 :(得分:0)

这似乎解决了这个问题

plot1 <- plot1 + geom_errorbar(data =mydata.m[!is.na(mydata.m$error), ], aes(ymin=mydata.m$value - mydata.m$error, ymax=mydata.m$value + mydata.m$error), width=.05)