【问题标题】:counting number of true/talse periods in r计算 r 中的真/假周期数
【发布时间】: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

标签: r vector boolean counter


【解决方案1】:

这个怎么样:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    相关资源
    最近更新 更多