Вот мой фрейм данных:
df <- data.frame(id=c("124", "124", "124", "456", "456", "456", "456", "8675", "8675", "8675", "8675", "8675", "124", "124", "124", "124"),
condition=c("beg", "mid", "end", "beg", "mid", "mid", "end", "beg", "mid", "mid", "mid", "end", "beg", "mid", "mid", "end"),
school=c("a", "b", "c", "d", "e", "e", "f", "g", "h", "h", "h", "u", "j", "k", "k", "l"),
start_date=c("20000105", "20000601", "20000901", "20000105", "20000601", "20000620", "20000901", "19990805", "20000105", "20000601", "20000901", "20010115", "20060105", "20060701", "20061001", "20070110"),
end_date=c("20000501", "20000801", "20001215", "20000501", "20000801", "20001210", "20001215", "19991213", "20000501", "20000801", "20001215", "20010515", "20060501", "20060915", "20061215", "20070510"))
Многие из вопросов, которые я видел, либо заказывают внутри группы:
df_edited <- df %>%
group_by(id, idx = cumsum(seq == 1L)) %>%
mutate(counter = row_number()) %>%
ungroup %>%
select(-idx)
, либо перезапускают через 1 после выполнения условия.
df_edited$num <- ave(df_edited$id, df_edited$condition, FUN = seq_along)
Я отметил их как избранные, но они не применимы к тому, что я хочу сделать прямо сейчас. Что бы я хотел, чтобы номер группы был таким же на id
и менялся после df$condition=="end"
id condition school start_date end_date group
124 beg a 20000105 20000501 1
124 mid b 20000601 20000801 1
124 end c 20000901 20001215 1
456 beg d 20000105 20000501 2
456 mid e 20000601 20000801 2
456 mid e 20000620 20001210 2
456 end f 20000901 20001215 2
8675 beg g 19990805 19991213 3
8675 mid h 20000105 20000501 3
8675 mid h 20000601 20000801 3
8675 mid h 20000901 20001215 3
8675 end h 20010115 20010515 3
124 beg j 20060105 20060501 4
124 mid k 20060701 20060915 4
124 mid k 20061001 20061215 4
124 end l 20070110 20070510 4
Может ли кто-нибудь помочь? Спасибо!
Каждый идентификатор может go через начало, середину, конец несколько раз, но я все равно хотел бы, чтобы номер группы был другим, даже если идентификатор один и тот же.