You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于另一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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 08:47:09