【发布时间】:2018-05-16 02:52:47
【问题描述】:
我想根据“事件”列中“事故”的第一次出现来分配顺序组值 (1-n)。因此,从开始到第一次事故的所有内容,包括事故本身,都属于第 1 组。同样的原则将适用于下一组。你知道我怎样才能在 R 中实现这一点吗?谢谢!
【问题讨论】:
标签: r grouping data-manipulation
我想根据“事件”列中“事故”的第一次出现来分配顺序组值 (1-n)。因此,从开始到第一次事故的所有内容,包括事故本身,都属于第 1 组。同样的原则将适用于下一组。你知道我怎样才能在 R 中实现这一点吗?谢谢!
【问题讨论】:
标签: r grouping data-manipulation
我们做逻辑表达式的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))
【讨论】: