【发布时间】:2021-07-17 22:14:50
【问题描述】:
我想创建一个仅在满足条件时才增加的累积增量计数器。
DT <- data.table(id = c(1, 1, 1, 1, 1, 1, 1, 2, 2, 2),
b = c(10L, 5L, 3L, 4L, 2L, 6L, 1L, 3L, 5L, 7L))
rleid 没有得到想要的结果,因为在连续行中满足两个条件时,不会执行增量
> DT[,count := rleid(b>=5),id]
> DT
id b count
1: 1 10 1
2: 1 5 1
3: 1 3 2
4: 1 4 2
5: 1 2 2
6: 1 6 3
7: 1 1 4
8: 2 3 1
9: 2 5 2
10: 2 7 2
预期的结果是
> DT
id b count
1: 1 10 1
2: 1 5 2
3: 1 3 2
4: 1 4 2
5: 1 2 2
6: 1 6 3
7: 1 1 3
8: 2 3 1
9: 2 5 2
10: 2 7 3
【问题讨论】:
-
试试
DT[, count := rleid(cumsum(b >= 5)), by = .(id)]。
标签: r data.table counter