【问题标题】:check number of times consecutive value appear based on a certain criteria根据特定条件检查连续值出现的次数
【发布时间】:2014-10-10 10:20:11
【问题描述】:

我想找出大于特定数字的 2/3/4/5/6 连续数字出现在向量中的次数。例如对于以下向量

x=c(1,1,3,4,9,1,9,1,5,4,5,2,1,1,4,6) 

计算两个连续数字 > 3 (4,9) & (4,6) = 2 的次数 三个连续数字 > 3(例如 5,4,5)= 1 以此类推 4,5,6 个连续数字

下面的代码只给出了一个值连续出现的次数。

runs <- rle(x) 
with(runs, table(values, lengths))

非常感谢任何帮助。

谢谢 谢谢

【问题讨论】:

    标签: r


    【解决方案1】:

    试试:

    f1 <- function(vec, val, n){
    rl <- rle(vec >val)
    sum(rl$lengths[rl$values]==n)
    }
    
     f1(x, 3, 2)
     #[1] 2
     f1(x, 3, 3)
     #[1] 1
    

    或者一次性完成所有操作

    sapply(2:6, function(y) {rl <- rle(x>y);sum(rl$lengths[rl$values]==2)})
    # [1] 1 2 0 0 0
    sapply(2:6, function(y) {rl <- rle(x>y);sum(rl$lengths[rl$values]==3)})
    #[1] 2 1 0 0 0
    sapply(2:6, function(y) {rl <- rle(x>y);sum(rl$lengths[rl$values]==4)})
    #[1] 0 0 0 0 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 2015-12-08
      • 2021-04-02
      • 1970-01-01
      • 2017-06-27
      相关资源
      最近更新 更多