如何在R的data.table中将两个分类列合并为新组合列?
在data.table中生成药物组合列(var1_var2格式)
原始数据
library(data.table) df <- data.table(id=c(1,2,3,4,5,6,7,8,9,10), var1=c(0,4,5,6,99,3,5,5,23,0), var2=c(22,4,6,25,6,70,75,23,24,21))
需求
新增var3列,每个单元格的值为var1与var2用下划线_连接的字符串,用于标识药物组合。
解决方案
利用data.table的原地赋值语法:=,结合字符串拼接函数即可高效实现:
方法1:基础拼接(适用于数值/字符型变量)
# 原地新增var3列,直接拼接 df[, var3 := paste0(var1, "_", var2)]
paste0是paste的简化版,无需额外指定分隔符,直接拼接字符串,适合这种固定分隔符的场景。
方法2:处理因子型变量(若var1/var2为分类因子)
如果var1或var2是因子类型,需先转换为字符型再拼接,避免出现因子的底层编码值:
df[, var3 := paste0(as.character(var1), "_", as.character(var2))]
验证结果
执行上述代码后,df将生成符合要求的var3列,结果如下:
df # id var1 var2 var3 # 1: 1 0 22 0_22 # 2: 2 4 4 4_4 # 3: 3 5 6 5_6 # 4: 4 6 25 6_25 # 5: 5 99 6 99_6 # 6: 6 3 70 3_70 # 7: 7 5 75 5_75 # 8: 8 5 23 5_23 # 9: 9 23 24 23_24 # 10: 10 0 21 0_21
内容的提问来源于stack exchange,提问作者Lili
相关产品推荐
相关产品推荐

