我有两个data.tables - 一个有位置快照(df2
),另一个有骑行结束时(df1
)。我的目标是加入df2
上的df1
非常大的bike_id
,其中时间与最接近的匹配和data.table
匹配。我已尝试bike_id
中的所有内容,但似乎没有任何效果。
我几乎逐字地this example按time
和最近的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);
是否至少找不到某个日期?
答案 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)