计算 r 中 true/talse 个周期的数量
counting number of true/talse periods in r
我有一个从时间序列派生的布尔向量。它基本上看起来像这样: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]))
这个怎么样:
aaa[is.na(aaa)] <- FALSE
sum(rle(aaa)$values)
将NA
s转换为FALSE
,然后查看运行长度编码中有多少个TRUE
值(TRUE
存储为1, FALSE
为零).
我有一个从时间序列派生的布尔向量。它基本上看起来像这样: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]))
这个怎么样:
aaa[is.na(aaa)] <- FALSE
sum(rle(aaa)$values)
将NA
s转换为FALSE
,然后查看运行长度编码中有多少个TRUE
值(TRUE
存储为1, FALSE
为零).