R: Назначить значение группы на основе первого вхождения - PullRequest
0 голосов
/ 16 мая 2018

Я хочу назначить последовательное значение группы (1-n) на основе первого появления «Авария» в столбце «События». Таким образом, все с самого начала до первой аварии, включая саму аварию, будет группой 1. Тот же принцип будет применяться к следующим группам. Вы знаете, как я могу добиться этого в R? Спасибо!

enter image description here

1 Ответ

0 голосов
/ 16 мая 2018

Мы делаем 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

data

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))
...