【发布时间】:2021-04-11 20:17:15
【问题描述】:
我从以下两个数据框中提取了部分信息:
df1 <- data.frame(sample=c(1, 2, 3, 4, 5),
RT=c(3.88, 4.52, 32.82, 15.71, 20.33),
Hit=c(2, 1, 7, 1, 5))
和
df2 <- data.frame(rt_stand=c(4.5, 8.5, 15.8, 23.2, 35.0),
n_carb=c(10, 11, 12, 13, 14),
below=c(5.5, 6.8, 8.2, 10.0, 12.3))
我希望 df2 中的行根据 最近但较低的值加入 df1 的行。
输出将是这样的数据框:
| sample | RT | Hit | rt_stand | n_carb | below |
|---|---|---|---|---|---|
| 1 | 3.88 | 2 | NA | NA | NA |
| 2 | 4.52 | 1 | 4.5 | 10 | 5.5 |
| 3 | 32.82 | 7 | 23.2 | 13 | 10.0 |
| 4 | 15.71 | 1 | 8.5 | 11 | 6.8 |
| 5 | 20.33 | 5 | 15.8 | 12 | 8.2 |
上面是一个可重复的小例子。我相信要处理整个数据集,我需要创建一个循环,根据一个找到最小但更小的数字的函数将 df2 行绑定/合并到 df1。
我们将不胜感激。
【问题讨论】:
-
哪个变量的值最近但较低?您是否将
df1的RT与df2的rt_stand进行比较? -
滚动连接?我不太清楚您期望的逻辑:
library(data.table); setDT(df1); setDT(df2); df2[df1, on="rt_stand==RT", roll=TRUE]