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

在R data.table中依据另一表列名填充列的技术实现

用R data.table实现前缀列批量填充

假设我们有两个data.table:

  • 第一个表dt1,列名:a, b, c
  • 第二个表dt2,列名:a_1, a_2, b_2, b_1

要把dt1中a列的数据填充到dt2所有以a_为前缀的列,b列填充到所有以b_为前缀的列,可以按以下步骤操作:

方法步骤

  1. 提取需要匹配的前缀:确定dt1中需要对应到dt2的前缀列,比如这里的a和b(c列无需填充到dt2)。
  2. 遍历前缀批量赋值:对每个前缀,找到dt2中对应前缀的列,再用dt1的对应列完成赋值。

示例代码

library(data.table)

# 创建示例数据
dt1 <- data.table(a = 1:5, b = 6:10, c = 11:15)
dt2 <- data.table(a_1 = NA, a_2 = NA, b_2 = NA, b_1 = NA)

# 定义需要匹配的前缀(从dt1列名中选择)
prefixes <- c("a", "b")

# 批量填充数据
for(p in prefixes) {
  # 匹配dt2中以指定前缀+下划线开头的列名
  target_cols <- grep(paste0("^", p, "_"), colnames(dt2), value = TRUE)
  # 批量赋值
  dt2[, (target_cols) := dt1[[p]]]
}

# 查看填充后的结果
print(dt2)

代码说明

  • grep(paste0("^", p, "_"), colnames(dt2), value = TRUE):用正则表达式精准匹配dt2中目标前缀的列,避免误匹配其他相似列名。
  • dt2[, (target_cols) := dt1[[p]]]:利用data.table的引用赋值特性,批量完成数据填充,比循环赋值效率更高。

内容的提问来源于stack exchange,提问作者user22892694

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:39:51