R - 基于特定匹配条件计算行数

时间:2017-07-07 02:41:14

标签: r

我希望在匹配设定标准(匹配变量)时,在单独的列计数1,2,3,4,5,6,7等中使用data.frame。如果符合,它将继续计数直到下一场比赛出现。

如果我设置:

匹配< - < -1.0

以下data.frame是输出的示例:

    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  

在第3行,我们有一个低于-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&lt; -1)[[&#34; lengths&#34;]],seq_len)))   do.call出错(c,lapply(rle(new.df $ sig_long&lt; -1)[[&#34; length&#34;]],seq_len)):     &#39;什么&#39;必须是函数或字符串

1 个答案:

答案 0 :(得分:0)

或许这样的事情,

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