R 长度不等的数据帧由于最近的日期时间而导致合并引入无效值

R 长度不等的数据帧由于最近的日期时间而导致合并引入无效值,r,datetime,join,merge,data.table,R,Datetime,Join,Merge,Data.table,我根据最接近的日期时间合并了两个数据帧,分别为约251k行和约237k行。但是,我对输出有一个问题 这里有一些小的假设性例子 大数据帧: dflarge将解决方案中的想法挖掘到: setDT(dflarge) setDT(dfsmall) dflarge[,jointdatetime:=datetime+3600]#我们加上3600秒(一小时) dflarge[,value:=dfsmall[dflarge,value,on=(datetime=jointdatetime),roll=7200]

我根据最接近的日期时间合并了两个数据帧,分别为约251k行和约237k行。但是,我对输出有一个问题

这里有一些小的假设性例子

大数据帧:


dflarge将解决方案中的想法挖掘到:

setDT(dflarge)
setDT(dfsmall)
dflarge[,jointdatetime:=datetime+3600]#我们加上3600秒(一小时)
dflarge[,value:=dfsmall[dflarge,value,on=(datetime=jointdatetime),roll=7200]
][,joindatetime:=NULL]
#日期时间值
# 1: 2021-01-01 12:47:16  
# 2: 2021-01-01 13:47:16  
# 3: 2021-01-01 14:47:16   0.5
# 4: 2021-01-01 15:47:16   1.0
# 5: 2021-01-01 16:47:16   1.5

谢谢@sindri_baldur,这样的天才是无价的!关于搜索解决方案,问题是搜索什么关键字,因此,对于这个平台上的不太高级的用户来说,找到解决方案仍然是一个问题。
# A tibble: 5 x 1
  datetime           
  <dttm>             
1 2021-01-01 12:47:16
2 2021-01-01 13:47:16
3 2021-01-01 14:47:16
4 2021-01-01 15:47:16
5 2021-01-01 16:47:16
# A tibble: 3 x 2
  datetime              value
  <dttm>              <dbl>
1 2021-01-01 15:00:00   0.5
2 2021-01-01 16:00:00   1  
3 2021-01-01 17:00:00   1.5
# A tibble: 5 x 2
  datetime              value
  <dttm>              <dbl>
1 2021-01-01 12:47:16   0.5
2 2021-01-01 13:47:16   0.5
3 2021-01-01 14:47:16   0.5
4 2021-01-01 15:47:16   1  
5 2021-01-01 16:47:16   1.5
setDT(dflarge)
setDT(dfsmall)
dflarge[, joindatetime := datetime + 3600] # we add 3600 secs (one hour)
dflarge[, value := dfsmall[dflarge, value, on = .(datetime = joindatetime), roll = 7200]
        ][, joindatetime := NULL]
#               datetime value
# 1: 2021-01-01 12:47:16  <NA>
# 2: 2021-01-01 13:47:16  <NA>
# 3: 2021-01-01 14:47:16   0.5
# 4: 2021-01-01 15:47:16   1.0
# 5: 2021-01-01 16:47:16   1.5