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

如何在data.table中基于d、k列分组生成组标签列a

解决方案:用data.table原生分组变量生成组编号

嘿,这个需求其实用data.table自带的分组机制就能轻松搞定,完全不用绕弯路~

首先看你的原始数据:

library(data.table)
dat = data.table(d=c(1:3,1),k=c(3:1,3),f=1)

原始表输出:

d k f
1: 1 3 1
2: 2 2 1
3: 3 1 1
4: 1 3 1

你需要按d和k的组合分组,给每个唯一组合分配一个编号,重复的组合编号相同。直接用data.table的.GRP内置变量就能实现:

dat[, a := .GRP, by = .(d, k)]

运行这段代码后,就能得到你想要的结果:

d k f a
1: 1 3 1 1
2: 2 2 1 2
3: 3 1 1 3
4: 1 3 1 1

简单解释下:

  • by = .(d, k)指定了分组依据是d和k的组合
  • .GRP是data.table在分组操作时自动生成的变量,会为每个唯一分组分配递增的序号
  • 把.GRP赋值给新列a,就完成了组编号的生成——不管d、k的组合重复出现多少次,同一个组合都会得到相同的编号,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:42:27