检查基于特定标准出现连续值的次数

时间:2014-10-10 10:20:12

标签: r

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

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

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

以下代码仅显示值连续出现的次数。

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

我真的很感激任何帮助。

由于 感谢

1 个答案:

答案 0 :(得分: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