【问题标题】:R - Count number of rows based on specific matching criteriaR - 根据特定匹配条件计算行数
【发布时间】:2017-07-07 02:41:14
【问题描述】:

我有一个 data.frame,我希望在匹配一组条件(匹配变量)后,在单独的列计数 1、2、3、4、5、6、7 等中......在条件之后满足,它会继续计数,直到下一个匹配出现。

如果我设置:

匹配

下面的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

【问题讨论】:

    标签: r


    【解决方案1】:

    可能是这样的,

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

    【讨论】:

    • 上面的时间序列每一行的1,2,3,4,5,6等是不是和上面一样?我认为 rle 找到最长的长度? seq_along 进行计数...我只需要它在第一次匹配
    • 我在帖子中的编辑时收到了错误......如果它有效,我会接受答案。你知道我做错了什么吗?
    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 2018-08-07
    • 1970-01-01
    • 2021-06-21
    • 2022-01-24
    相关资源
    最近更新 更多