r语言 - 通过在排序的 data.table 中重复值来创建组索引到分组



我想对时间序列中的组执行一些汇总统计。这是我所拥有的

test = data.table(ind=c(1:8), val = c(0,0,1,1,1,0,0,1))
    ind val
1:   1   0
2:   2   0
3:   3   1
4:   4   1
5:   5   1
6:   6   0
7:   7   0
8:   8   1

如何创建第三列作为我的组索引?像这样 -

    ind val group_id
1:   1   0        1
2:   2   0        1
3:   3   1        2
4:   4   1        2
5:   5   1        2
6:   6   0        3
7:   7   0        3
8:   8   1        4

我对有效的解决方案感兴趣(因为现实生活中的桌子相当大(,并希望避免直接for loop

data.table::rleid是专门为此类工作而设计的。它生成运行长度类型 ID,如 ?rleid 中所述。

在这种情况下,您可以尝试:

test[, group_id := rleid(val)]

最新更新