如何从数据框中的列中获取连续零的数量

我正在尝试找出如何为数据帧的给定列获取连续零的数量。

这是一个数据框:

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))`

以上是如何从数据框中的列中获取连续零的数量的全部内容。
THE END
分享
二维码
)">
< <上一篇
下一篇>>