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

基于R语言data.table实现数值分组生成新分类变量的需求

用data.table生成指定规则的分类变量

给定的data.table数据集:

dt <- data.table(ID = c(1, 2, 3, 4),
                 q1= c(1, NA, NA, 1), 
                 q2= c(1, 3, 2, NA), 
                 q3= c(2, 1, 4, 4))

需要为q1、q2、q3分别生成对应分类列(q1_cat、q2_cat、q3_cat),规则如下:

  • 数值1、2 → "YES"
  • 数值3 → "NO"
  • 数值4 → "IDK"
  • NA值保持不变

实现代码

利用data.table的fcase做条件映射,配合lapply批量处理目标列,高效完成需求:

library(data.table)

dt[, paste0(c("q1", "q2", "q3"), "_cat") := lapply(.SD, function(col) {
  fcase(
    col %in% c(1, 2), "YES",
    col == 3, "NO",
    col == 4, "IDK",
    default = NA_character_
  )
}), .SDcols = c("q1", "q2", "q3")]

最终结果

运行代码后查看数据集:

print(dt)

输出与预期一致:

ID q1 q2 q3 q1_cat q2_cat q3_cat
1:  1  1  1  2    YES    YES    YES
2:  2 NA  3  1     NA     NO    YES
3:  3 NA  2  4     NA    YES    IDK
4:  4  1 NA  4    YES     NA    IDK

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 09:47:16