Я работаю с данными, касающимися разных случаев, проходящих процесс, состоящий из разных стадий, в течение определенного периода времени. Каждый случай имеет уникальный идентификационный номер. Процесс может начинаться в нескольких этапах и заканчиваться этапом «Завершено» (за исключением еще не прошедших этапов). Дело может пройти процесс несколько раз.
Данные выглядят примерно так:
library(dplyr)
df1 <- structure(list(id = c("1", "1", "2", "2", "2", "2", "3", "3",
"3", "3", "3", "3", "3", "3", "3", "3"), time = structure(c(17453,
17458, 17453, 17462, 17727, 17735, 17453, 17484, 17568, 17665,
17665, 17709, 17727, 17727, 17757, 17819), class = "Date"), old_fase =
c(NA, "Fase 1", NA, "Fase 1", "Finished", "Fase 1", NA, "Fase 1", "Fase 2A",
"Finished", "Fase 2A", "Fase 2B", "Finished", "Fase 2B", "Fase 1",
"Fase 2A"), new_fase = c("Fase 1", "Finished", "Fase 1", "Finished",
"Fase 1", "Finished", "Fase 1", "Fase 2A", "Finished", "Fase 2A",
"Fase 2B", "Finished", "Fase 2B", "Fase 1", "Fase 2A", "Fase 2B"
)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -16L))
Для моего анализа я хочу создать новый идентификатор на основе встречаемости каждого процесса для каждого идентификатора. Использование group_by и mutate для «id» и «new_fase» создает следующее неправильное решение. Это происходит из-за первого появления «Fase 2B» в строке 11.
df1 %>%
group_by(id,new_fase) %>%
mutate(occurrence=row_number())
Правильное решение должно выглядеть так:
df1 %>%
mutate(occurrence = c(rep(1, 4), 2, 2, rep(1, 3), rep(2, 3), rep(3, 4)))
Я попробовал несколько подходов и прочитал несколько сообщений Stackoverflow, но не могу понять это правильно. Мы ценим любую помощь, желательно с помощью решения tidyverse.