根据R中的范围值合并两个数据帧

时间:2019-11-25 16:44:49

标签: r join merge

是否可能有一个函数可以考虑在关节的“ by”参数中包含一个范围?

示例:

#Table 1
  A B C D
1 a 1 10 15
2 a 11 1000 12.5
3 b 1 5 2
4 b 6 1000 1

#Table 2
  A B
1 a 53
2 b 3 

联合表:

  A B 1.D
1 a 53 12.5
2 b 3 2

1 个答案:

答案 0 :(得分:1)

您似乎想基于与A和B上的表1的滚动连接来更新表2

library(data.table)
setDT(tb1)
setDT(tb2)

tb2[tb1, on = .(A, B), roll = -Inf, D := i.D]

这将更新tb2,现在我们有了

tb2
#    A  B    D
# 1: a 53 12.5
# 2: b  3  2.0

使用的数据:

tb1 <- fread('
A B C D
 a 1 10 15
 a 11 1000 12.5
 b 1 5 2
 b 6 1000 1
')

tb2 <- fread('
  A B
 a 53
 b 3 
')