我正在尝试一种基于多列条件识别群组的明确方法。
作为一个例子,我们有一个按日期和另一个数字列排序的点表:
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万点所以请不要循环。有帮助吗?非常感谢!!!
答案 0 :(得分:1)
我们在逻辑cumsum
(vector
)上需要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