Я не думаю, что case_when
- лучший выбор здесь. Одним из способов было бы replace
значения с шаблоном (\\.
) до NA
и затем fill
NA
с предыдущим значением, отличным от NA.
library(tidyverse)
ah %>%
mutate(cor_type = replace(cor_type, str_detect(cor_type, "\\."), NA)) %>%
fill(cor_type)
# a cor_type
#1 1 soft corals
#2 2 soft corals
#3 3 soft corals
#4 4 soft corals
#5 5 soft corals
#6 6 soft corals
#7 7 sea fans
#8 8 sea fans
#9 9 sea fans
#10 10 sea fans
данные
Создан небольшой воспроизводимый пример для работы.
ah <- data.frame(a = 1:10, cor_type = c("soft corals", "soft corals",
"..5", "..5", "..5","..6", "sea fans", "sea fans", "..13", "..14" ))
ah
# a cor_type
#1 1 soft corals
#2 2 soft corals
#3 3 ..5
#4 4 ..5
#5 5 ..5
#6 6 ..6
#7 7 sea fans
#8 8 sea fans
#9 9 ..13
#10 10 ..14