У меня есть столбец LETTER
значений в алфавитном порядке c порядок в кадре данных, частично перемежающийся с NA
:
df1 <- data.frame(
phase = c(NA, "A", "B", "D", NA, "A", "B", "C", "E", "A", "B", "D")
)
Значения LETTER
формируют группы: все, начиная с A
пока или следующий NA
или следующий A
не станет группой. Я хотел бы создать новый столбец, чтобы сделать эти группы явными.
Ожидаемый результат:
df1 <- data.frame(
phase = c(NA, "A", "B", "D", NA, "A", "B", "C", "E", "A", "B", "D"),
group = c(NA,"group1","group1","group1",NA, "group2","group2","group2","group2","group3","group3","group3")
)
Как я могу создать этот столбец? Я благодарен за любой совет, основанный на dplyr
или нет.
То, что я пробовал до сих пор, - с частичным успехом (третья группа, которая не отделена от второй NA
, отсутствует):
df1 %>%
mutate(group = cumsum(is.na(phase)),
group = ifelse(is.na(phase), NA, paste("group", group, sep = "")))
phase group
1 <NA> <NA>
2 A group1
3 B group1
4 D group1
5 <NA> <NA>
6 A group2
7 B group2
8 C group2
9 E group2
10 A group2
11 B group2
12 D group2