You need to enable JavaScript to run this app. R data.table按组聚合时非数值型列的获取方法
优惠活动
大模型
产品
解决方案
定价
更多

R data.table按组聚合时非数值型列的获取方法

data.table 分组聚合保留同组唯一字符串列的实现方法

直接在j参数的返回列表中同时定义数值列的聚合规则、以及字符串列取组内第一个值的规则即可,单条命令就能实现需求,核心代码如下:

dt[, .(X = mean(X), Y = Y[1]), by = .(id)]

扩展用法

如果存在多个同组唯一的非数值列需要保留,可使用以下两种写法简化代码:

  • 手动指定要保留的非数值列
# 假设除Y外还有Z、P两个同组唯一的非数值列
dt[, c(.(X = mean(X)), .SD[1, .(Y, Z, P)]), by = .(id)]
  • 自动保留除聚合数值列外的所有非数值列首个值
dt[, c(.(X = mean(X)), .SD[1, !"X"]), by = .(id)]

注意事项

因为你已经确认同一id分组内非数值列取值完全一致,除了[1]取第一个值,使用unique(Y)、max(Y)等写法也能得到相同结果,其中Y[1]是性能最优的实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 14:15:10