我想在时间序列中对群组执行一些摘要统计。这就是我所拥有的
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
答案 0 :(得分:1)
data.table::rleid
专为此类工作而设计。它会生成行程长度类型的ID,如?rleid
中所述。
在这种情况下,您可以尝试:
test[, group_id := rleid(val)]