通过查找两个数据帧中某些列中的最接近值,从一个数据帧中提取行以联接另一个数据帧


time_1 <- sort(sample(seq(from = 1, to = 800, by = 1), size = 100, replace = FALSE))
time_2 <- sort(sample(seq(from = 1, to = 800, by = 1), size = 500, replace = FALSE))
Var1 <- runif(100)
Var2 <- runif(500)
Var3 <- runif(500)
df1 <- data.frame(time_1,Var1)
df2 <- data.frame(time_2,Var2,Var3)

df2 中的列 Var2 和 Var3 需要加入 df1。

联接基于分别在 df1 和 df2 中的列time_1和time_2中查找最接近的值。

如何在 R 中完成此任务?我可以使用任何有用的库或函数?

谢谢!

可能是roll="nearest"可以帮助你。

library(data.table)
setDT(df1)
setDT(df2)
df2[df1,on = .(time_2 = time_1), roll = "nearest"]
#Result (may vary since seed is not used)
     time_2  Var1   Var3  Var2
  1:      1 0.981 0.5264 0.423
  2:     10 0.607 0.4886 0.662
  3:     11 0.740 0.0809 0.857
  4:     18 0.647 0.9108 0.376
  5:     19 0.647 0.9108 0.712
 ---                          
496:    686 0.405 0.4537 0.248
497:    710 0.629 0.8922 0.376
498:    721 0.056 0.2882 0.280
499:    759 0.976 0.0520 0.806
500:    796 0.850 0.8068 0.980

最新更新