【发布时间】:2016-10-18 09:50:48
【问题描述】:
我有一个从时间序列派生的布尔向量。它基本上看起来像这样: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]))
【问题讨论】:
-
你希望 c(TRUE, NA, TRUE) 给你什么?您的查询的答案可能使用运行长度编码,请参阅
?rle -
请编辑帖子以包含您的评论,并包含虚拟代码以突出显示 1) 输入向量 2) 输出向量 3) 您到目前为止尝试过什么。请看how to post a reproducible example
-
@Miff: c(TRUE, NA, TRUE) 应该返回 2
-
rle(aaa[!is.na(aaa)])也许 -
如果您首先使用
which()转换为索引,则类似于this one。