我有两个数据表如下:
dt1 <- data.table(range_col = c(1, 7, 10, 15, 20), new_col = NA)
dt2 <- data.table(min_val = c(0, 6, 11, 16), max_val = c(5, 10, 15, 20), value_col = c(100, 200, 300, 400))
现在,根据列“range_col”的值以及数据表“dt2”中“min_val”和“max_val”字段中的值之间的范围,必须将“dt2”的“value_col”中的相应值赋给“dt1”的“new_col”
2条答案
按热度按时间frebpwbc1#
我们可以使用不等连接将
value_col
连接到dt1
,然后将其重命名为new_col
:来自OP的数据:
创建于2023年3月15日,使用reprex v2.0.2
hgqdbh6s2#
您可以使用
findInterval
:另一个(更安全的)
data.table
选项是foverlaps
:在
dplyr
中: