我有一个从时间序列派生的布尔矢量。它基本上看起来像这样:c(true,false,true,true,false,false,false,true,true ......)。
我想计算向量为真的周期。示例:对于这样的向量:c(true,true,false,true)它将是2(开头为1个长真实期,最后为1个短)。
向量可以在开头包含NA。
我想到了类似的东西:
aaa <- c(NA,F,T,T,T,F)
for(j in 1:(length(aaa)-1)){
if(aaa[j]!=aaa[j+1]){
# add a counter that returns [1]
}
}
=============================================== ==
编辑:这对我来说很好用:
data.frame("#"=unlist(rle(aaa)[1]),"length"=unlist(rle(aaa)[2]))
答案 0 :(得分:1)
这个怎么样:
aaa[is.na(aaa)] <- FALSE
sum(rle(aaa)$values)
将NA
转换为FALSE
,并查看运行长度编码中有多少TRUE
个值TRUE
存储为1,{{1} }为零)。