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

如何用dcast()按分组堆叠/合并data.table的字符串列

解决data.table按分组合并字符串的问题

这问题我太熟啦,用data.table的分组聚合功能就能轻松实现你要的效果!

首先先确认你的原始数据生成代码(我帮你修正了小细节,rep(letters[1:6])其实不用额外加rep,直接letters[1:6]就可以,不过不影响最终数据结果):

library(data.table)
DT <- data.table(id = rep(1:3, 2), class = letters[1:6], des = rep(LETTERS[1:2], 3))

接下来就是核心的转换代码,按id分组后,用paste()配合collapse参数把每个分组里的字符串拼接起来:

result <- DT[, .(class = paste(class, collapse = ", "), des = paste(des, collapse = ", ")), by = id]

运行后你就能得到完全符合需求的结构:

id class   des
1:  1  a, d A, B
2:  2  b, e B, A
3:  3  c, f A, B

简单拆解下逻辑:

  • by = id:指定按id列进行分组,把相同id的行归为一组
  • .():在data.table里用来定义要生成的新列,这里我们对每个分组的class和des列分别做拼接处理
  • paste(class, collapse = ", "):把当前分组里的所有class字符串用, (逗号加空格)连接成一个字符串,collapse参数就是用来指定拼接的分隔符

如果之前尝试没成功,大概率是没把paste的collapse参数用对,或者分组的语法没写到位,这个方法是data.table处理这类字符串合并需求的标准姿势,效率还很高,处理大数据集也不在话下~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:58:36