如何从数据框中的列中获取连续零的数量
我正在尝试找出如何为数据帧的给定列获取连续零的数量。
这是一个数据框:
data <- data.frame(id = c(1,1,1,1,1,1,2,2,2,2,2,2), value = c(1,0,0,1,0,0,0,0,0,0,4,3))
这将是所需的输出:
id value consec
1 1 0
1 0 2
1 0 2
1 1 0
1 0 2
1 0 2
2 0 4
2 0 4
2 0 4
2 0 4
2 4 0
2 3 0
关于如何实现此输出的任何想法?非常感谢
回答
你可以做:
data$consec <- with(data, ave(value, value, cumsum(value != 0), id, FUN = length) - (value != 0))
data
id value consec
1 1 1 0
2 1 0 2
3 1 0 2
4 1 1 0
5 1 0 2
6 1 0 2
7 2 0 4
8 2 0 4
9 2 0 4
10 2 0 4
11 2 4 0
12 2 3 0
- An variant: `with(data, ave(value==0, value, cumsum(value != 0), id, FUN = sum))`