r根据条件识别群体

时间:2016-11-25 16:30:11

标签: r grouping

我正在尝试一种基于多列条件识别群组的明确方法。

作为一个例子,我们有一个按日期和另一个数字列排序的点表:

DT <- data.table(a = paste0("Date", 1:10), V1 = c(1, 2, 11, 9, 11, 11, 2, 2, 11, 11))

         a V1
 1:  Date1  1
 2:  Date2  2
 3:  Date3 11
 4:  Date4  9
 5:  Date5 11
 6:  Date6 11
 7:  Date7  2
 8:  Date8  2
 9:  Date9 11
10: Date10 11

每次V1 > 10中的值我们都有一个新组获得下表:

         a V1 ID
 1:  Date1  1  1
 2:  Date2  2  1
 3:  Date3 11  2
 4:  Date4  9  2
 5:  Date5 11  3
 6:  Date6 11  4
 7:  Date7  2  4
 8:  Date8  2  4
 9:  Date9 11  5
10: Date10 11  6

这些表超过300万点所以请不要循环。有帮助吗?非常感谢!!!

1 个答案:

答案 0 :(得分:1)

我们在逻辑cumsumvector)上需要V1 > 10,如果它从0开始则添加1并指定(:=)来创建&# 39; ID&#39;柱

DT[, ID := cumsum(V1>10)+1]
DT$ID
#[1] 1 1 2 2 3 4 4 4 5 6