我有两个大型数据集,唯一的共享特征是数字时间戳。我想按此时间戳合并数据帧,但数据收集的频率并不完全匹配,因此我需要允许它与最近的可能匹配合并。
作为一个简化的示例,这里有一个小数据集,其中包含一个值列、一些事件和一个 ID:
a<-c("150", "164", "175", "183", "195", "200", "205","213")
b<-c("start1","end1","start2", "end2", "start1", "end1", "start2", "end2")
c<-c("A","A","A", "A", "B", "B", "B", "B")
(data<-data.table(value = a, event = b, ID = c))
我希望能够通过值列将这个“数据”与这个数字系列(“次”)合并:
(times<-data.frame(value = c(seq(from = 150, to = 213, by = 3))))
以便它们通过 value 列中最接近的近似匹配合并以生成此最终数据框:
agoal<-c(seq(from = 150, to = 213, by = 3))
bgoal<-c("start1","","","","","end1","", "",
"start2", "", "", "end2", "", "", "",
"start1", "", "end1", "start2", "", "", "end2")
cgoal<-c("A","","","","","A","", "",
"A", "", "", "A", "", "", "",
"B", "", "B", "B", "", "", "B")
(goal<-data.frame(value = agoal, event = bgoal, ID = cgoal))
有没有办法做到这一点,特别是对于一个非常大的数据集(所以它不会使 R 崩溃)?