【问题标题】:R: Assign group value based on first occurenceR:根据第一次出现分配组值
【发布时间】:2018-05-16 02:52:47
【问题描述】:

我想根据“事件”列中“事故”的第一次出现来分配顺序组值 (1-n)。因此,从开始到第一次事故的所有内容,包括事故本身,都属于第 1 组。同样的原则将适用于下一组。你知道我怎样才能在 R 中实现这一点吗?谢谢!

【问题讨论】:

    标签: r grouping data-manipulation


    【解决方案1】:

    我们做逻辑表达式的lag,得到累加和

    library(dplyr)
    df1 %>%
        mutate(Group = cumsum(lag(Events == "Accident", default = TRUE)))
    #     Events Group
    #1         A     1
    #2         A     1
    #3         A     1
    #4         B     1
    #5         C     1
    #6         A     1
    #7         C     1
    #8         B     1
    #9  Accident     1
    #10        C     2
    #11        C     2
    #12        C     2
    #13        B     2
    #14        A     2
    #15 Accident     2
    #16        C     3
    #17        A     3
    #18        A     3
    #19        B     3
    #20        B     3
    #21 Accident     3
    

    数据

    df1 <- structure(list(Events = c("A", "A", "A", "B", "C", "A", "C", 
    "B", "Accident", "C", "C", "C", "B", "A", "Accident", "C", "A", 
     "A", "B", "B", "Accident")), class = "data.frame", row.names = c(NA, 
    -21L))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      相关资源
      最近更新 更多