Это пример типа используемого фрейма данных и желаемого вывода столбца.
reprEx <- data.frame(id = c(1,1,1,1,1,1,1,2,2,2,2,3,3,3),
stage1 = c("open","open","open","approved","approved","open","declined","open","open","open","declined","open","approved","declined"))
Desireddf <- data.frame(id = c(1,1,1,1,1,1,1,2,2,2,2,3,3,3),
stage1 = c("open","open","open","approved","approved","open","declined","open","open","open","declined","open","approved","declined"),
desiredResult = c(0,0,1,1,0,0,1,0,0,1,1,1,1,1))
Я пытаюсь использовать dplyr для правильной пометки при каждом изменении этапа внутри сгруппированного идентификатора. , Подтвержденные и отклоненные флаги просты, потому что мне нужно только отметить первый случай отклоненного или утвержденного появления с:
reprExWrong <- reprEx %>% group_by(id,stage1) %>%
mutate(desiredResult = ifelse(stage1 == last(stage1) & stage1 == "open",1,
ifelse(stage1 == first(stage1) & stage1 %in% c("approved","declined"),1,0)
)
)
Проблема с открытой стадией. Я хочу применить флаг только тогда, когда первые последовательности открытий заканчиваются в группе идентификаторов. С кодом, который у меня есть сейчас, он выбирает последнее открытие в группе, даже если оно не было частью первой последовательности открытий. например:
reprExWrong <- data.frame(id = c(1,1,1,1,1,1,1,2,2,2,2,3,3,3),
stage1 = c("open","open","open","approved","approved","open","declined","open","open","open","declined","open","approved","declined"),
notdesiredResult = c(0,0,0,1,0,1,1,0,0,1,1,1,1,1))
В этом случае внутри id1 мне понадобится флаг, чтобы показать, где последовательность достигает последнего открытия до появления одобренного, а не в открытии после появления одобренного. Мне нужен только флаг в строке последнего вхождения open, если эта последовательность открытий является первой последовательностью внутри идентификатора. Извините за путаницу, я был бы рад уточнить. Это просто для правильного определения сценических переходов для целей записи