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

R data.table下快速生成用户层级group_id的可扩展方法求助

最优解决方案

直接用data.table内置的.GRP分组标识变量即可,这是原生C语言优化的功能,处理亿级数据性能拉满,且天然支持单列/多列分组场景,不需要额外写join逻辑。
示例代码:

# 单user列分组场景
df[, group_id := .GRP, by = user]

# 后续多列分组直接修改by参数即可,例如按user、type两列分组
# df[, group_id := .GRP, by = .(user, type)]

运行后直接生成你需要的连续递增分组ID,不需要任何中间过渡变量。


你现有思路的修正方案(不推荐大数量使用)

你用duplicated的思路逻辑上是可行的,但性能远低于.GRP,仅做参考:

df[, group_id := cumsum(!duplicated(user))]

该写法仅支持单列分组,多列场景需要额外调整去重判断逻辑,亿级数据下执行效率比.GRP低30%以上,不建议生产环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:24:02