计算r中的真/假期数

时间:2016-10-18 09:50:49

标签: r vector boolean counter

我有一个从时间序列派生的布尔矢量。它基本上看起来像这样: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]))

1 个答案:

答案 0 :(得分:1)

这个怎么样:

aaa[is.na(aaa)] <- FALSE
sum(rle(aaa)$values)

NA转换为FALSE,并查看运行长度编码中有多少TRUE个值TRUE存储为1,{{1} }为零)。