没有NA的连续数量的事件

时间:2013-10-18 13:15:14

标签: r

如何从矢量中提取没有空事件的连续事件的数量?

我已经尝试了rle(),但它没有给我我想要的东西。

使用此类数据

data=c(NA,NA,seq(1,4,0.5),NA,0,0,NA,NA,NA,NA,runif(10,-5,10),NA)

我希望能够知道没有NA的不同事件序列的长度。对于这种情况,输出应为:7, 2 and 10

我还需要每个事件序列的位置。

1 个答案:

答案 0 :(得分:4)

rle在这里工作:

data=c(NA,NA,seq(1,4,0.5),NA,0,0,NA,NA,NA,NA,runif(10,-5,10),NA)
with(rle(!is.na(data)),lengths[values])
## [1]  7  2 10

你可以得到这样的长度和位置:

with(rle(!is.na(data)),cbind(length=lengths[values],position=cumsum(c(1,lengths))[values]))
##      length position
## [1,]      7        3
## [2,]      2       11
## [3,]     10       17