【问题标题】:Determine the number of runs of a specified length确定指定长度的运行次数
【发布时间】:2015-10-16 03:25:38
【问题描述】:

我有以下向量,data

data <- c(1,1,0,1,1,1,0,1,0,0,0,0,0,0,1,1,1,1,0)

当数字 1 连续出现至少 3 次时,我想将其计为 1。 所以上面需要的输出是2。

【问题讨论】:

    标签: r


    【解决方案1】:

    您可以使用rle()

    with(rle(data), sum(lengths >= 3 & values == 1))
    # [1] 2
    

    【讨论】:

      【解决方案2】:

      另一个选项是rleid 来自data.table

      library(data.table)#v1.9.6+
      sum(table(rleid(data),data)[,2]>=3)
      #[1] 2
      

      【讨论】:

        【解决方案3】:

        stringi的解决方案:

        library(stringi)
        stri_count(paste(data, collapse=''), regex='1{3,}')
        #[1] 2
        

        stringr 完成了这项工作,但似乎速度较慢:

        library(stringr)
        str_count(paste(data, collapse=''), '1{3,}')
        #[1] 2
        

        你也可以试试这个基础R 方法:

        length(strsplit(gsub('1{3,}', 'a', paste(data, collapse='')), 'a')[[1]]) - 1
        #[1] 2
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-02-17
          • 1970-01-01
          • 1970-01-01
          • 2015-11-30
          • 1970-01-01
          • 2013-11-11
          • 1970-01-01
          相关资源
          最近更新 更多