将两个data.frame与两个键合并,其中一个是最接近的日期

时间:2017-07-17 12:21:29

标签: r

我尝试使用两个键将table2中的列合并到table1。在我遇到问题的地方,其中一个密钥是日期,而且我并不总是有完全匹配日期。因此,我希望使用table1中最接近该日期的日期table2来匹配日期,但不是"更大"比它。如果我有:

table1 <- data.frame(id1=c(30380,30380,30455,51949), date=as.POSIXct(c("2012-05-13 00:00:00","2012-09-23 00:00:00","2011-04-09 00:00:00","2014-11-08 00:00:00"))) 

table2 <- data.frame(id2=c(30380,30380,30380,30380,
                       30455,30455,
                       51949,51949,51949), 
                 date=as.POSIXct(c("2012-10-01 00:00:00","2012-08-31 00:00:00","2012-02-22 00:00:00","2011-08-30 00:00:00",
                                   "2011-08-30 00:00:00","2011-02-22 00:00:00",
                                   "2015-01-08 00:00:00","2014-08-24 00:00:00","2014-11-08 00:00:00")),
                 rating=c(77,79,82,80,80,81,78,79,77))

然后我会期望输出:

output <- data.frame(id1=c(30380,30380,30455,51949), 
                 date=as.POSIXct(c("2012-05-13 00:00:00","2012-09-23 00:00:00","2011-04-09 00:00:00","2014-11-08 00:00:00")),
                 rating=c(82,79,81,77))

我尝试使用data.table的{​​{1}}滚动选项但没有成功。如果重要的话,我还计划在几个列上执行此操作,这意味着我将创建多个setDT()列,因为我实际上有几个rating列。我认为先解决这个问题比攻击所有问题更好。我真的卡住了,谢谢你的帮助。

0 个答案:

没有答案