如何在R的data.table中通过另一个data.table的键值对设置列值?
使用data.table实现键值匹配并添加新列
可以利用data.table的连接赋值特性高效完成这个需求,无需额外创建中间表,直接在原表A上添加对应列:
# 加载data.table包(如果未加载) library(data.table) # 定义原始数据 A <- data.table(Col1 = c(1,4,2,5,6,2,3,5,3,7)) B <- data.table(Col1 = c(1,2,3,4,5,6,7), Col2 = c("A","B","C","D","E","F","G")) # 核心操作:通过Col1匹配,给A添加对应的Col2列 A[B, on = "Col1", Col2 := i.Col2]
代码说明
on = "Col1":指定两个表通过Col1列进行匹配关联i.Col2:这里的i代表被连接的表(即B表),i.Col2表示取B表中匹配到的Col2值Col2 := ...:data.table的原地赋值语法,直接在A表中创建新列Col2,无需额外复制数据,效率更高
执行完上述代码后,A表就会生成目标结果:
Col1 Col2 1: 1 A 2: 4 D 3: 2 B 4: 5 E 5: 6 F 6: 2 B 7: 3 C 8: 5 E 9: 3 C 10: 7 G
内容的提问来源于stack exchange,提问作者user321627
相关产品推荐
相关产品推荐

