基于另一data.table的字段值范围为目标data.table字段赋值
使用data.table实现区间匹配赋值
首先定义原始数据:
library(data.table) 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))
直接利用data.table的非等连接功能,就能高效完成区间匹配和赋值操作:
dt1[dt2, new_col := i.value_col, on = .(range_col >= min_val, range_col <= max_val)]
代码说明
on = .(range_col >= min_val, range_col <= max_val):指定匹配条件,即dt1$range_col落在dt2$min_val到dt2$max_val的区间内new_col := i.value_col:将匹配到的dt2$value_col值赋值给dt1$new_col
执行后查看dt1的结果:
print(dt1)
输出结果:
range_col new_col 1: 1 100 2: 7 200 3: 10 200 4: 15 300 5: 20 400
内容的提问来源于stack exchange,提问作者D Surya Praveen
相关产品推荐
相关产品推荐

