【问题标题】:Sequence along numeric vector, increasing sequence only at trigger values [duplicate]沿数字向量序列,仅在触发值处增加序列[重复]
【发布时间】:2021-11-21 17:32:18
【问题描述】:

我有一个按 ID 排序的data.frame,其中有一列数值,我想将这些数值分成组,仅当超过某个目标值/触发器时才增加组号。我在seq()seq_along()data.table cumsum() 上都没有成功,但我相信一定有办法

示例data.frame 与下面的所需组列。在此示例中,生成 group 列的序列应该在 value 列中出现 >= 300 的数字时增加。

dat = data.frame(ID=1:10, value=c(0,2,1,12,68,300,41,0,72959,51), group=c(1,1,1,1,1,2,2,2,3,3))

> dat
   ID value group
1   1     0     1
2   2     2     1
3   3     1     1
4   4    12     1
5   5    68     1
6   6   300     2
7   7    41     2
8   8     0     2
9   9 72959     3
10 10    51     3

【问题讨论】:

    标签: r data.table grouping seq cumsum


    【解决方案1】:

    我们可以在逻辑向量上使用cumsum 来创建组

    library(dplyr)
    dat %>%
         mutate(group2 = cumsum(value >=300)+ 1)
    

    -输出

       ID value group group2
    1   1     0     1      1
    2   2     2     1      1
    3   3     1     1      1
    4   4    12     1      1
    5   5    68     1      1
    6   6   300     2      2
    7   7    41     2      2
    8   8     0     2      2
    9   9 72959     3      3
    10 10    51     3      3
    

    【讨论】:

    • 是的,就是这张票。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    相关资源
    最近更新 更多