通过重复排序的data.table中的值来创建要分组的组索引

时间:2017-05-25 08:27:49

标签: r loops 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

1 个答案:

答案 0 :(得分:1)

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

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

test[, group_id := rleid(val)]