2017-07-07 45 views
0

我有希望,在匹配的一组标准(匹配变量),在单独的列数1,2,3,4,5一个data.frame行数6,7等......条件满足后,应继续计数直到出现下一场比赛。的R - 计数基于特定匹配准则

如果我设置:

匹配< - < -1.0

的下面data.frame是输出的一个示例:

上3行,我们有以下的匹配
roll.z.score.n3 sig.count  
1   NA   0   
2   NA   0   
3 -1.135974424  1   
4 0.193311168   2   
5 0.714285714   3   
6 -1.148753543  4   
7 -0.942160394  5   
8 0.695763683   6   
9 1.140646864   7   
10 0.985196899   8   
11 -0.768766574  1   
12 -1.011293858  2   
13 -0.516703612  3   
14 -1.120897077  4   
15 1.091089451   5   
16 0.968364052   6   
17 0.872871561   7   
18 1.099524999   8   
19 0.918397948   9 

- 1.0。所以数数众生,直到下一场比赛在第11场的-1.0以下。然后计数开始......并且它会继续这样做,直到下一场比赛低于-1.0。

任何帮助表示赞赏!

编辑:在响应于施洗

set.seed(123) 
new.df$sig_long <- runif(13787,2,1) 
cbind(new.df$sig_long, n = do.call(c, lapply(rle(new.df$sig_long < -1)[["lengths"]], seq_len))) 

cbind(new.df $ sig_long中,n = do.call(C,lapply(RLE(new.df $ sig_long < -1)[[ “长度”],seq_len))) 错误do.call(C,lapply(RLE(new.df $ sig_long < -1)[ “长度”],seq_len)): '什么' 必须是一个函数或字符串

回答

0

也许这样的东西,

set.seed(123) 
x <- runif(20,-2,1) 
cbind(x, n = do.call(c, lapply(rle(x < -1)[["lengths"]], seq_len))) 
+0

请问以上地方1,2,3,4,5,6等上的时间系列作为上述的每一行?我认为rle发现最长的长度? seq_along不计......我只是需要它来开始第一场比赛<-1.0计数,然后继续计数,直到下一个<-1.0 –

+0

可以运行的代码,并看到自己,但我们不能运行你的... – baptiste

+0

我得到错误作为我的编辑后....我会接受的答案,如果它的工作。你知道我做错了什么吗? –