В поисках подходящего дубликата (я уверен, что есть один). Тем временем ...
A dplyr
/ tidyr
будет использовать fill
после замены ""
записей на NA
s
library(tidyr)
library(dplyr)
df %>%
mutate(procedure = na_if(procedure, "")) %>%
fill(procedure)
# record procedure
#1 71438 hemiarch
#2 71438 hemiarch
#3 70333 hemiarch
#4 70333 hemiarch
#5 73236 hemiarch
С вашими обновленными примерами данных мы можем заполнить сначала вниз, затем вверх по record
группе
df %>%
mutate(procedure = na_if(procedure, "")) %>%
group_by(record) %>%
fill(procedure, .direction = "downup") %>%
ungroup()
## A tibble: 10 x 2
# record procedure
# <int> <fct>
# 1 71438 hemiarch
# 2 71438 hemiarch
# 3 70333 ET
# 4 70333 ET
# 5 73236 hemiarch
# 6 73216 ET
# 7 73246 hemiarch
# 8 73206 arch
# 9 70334 ET
#10 70334 ET
Пример данных
df<- read.table(text =
"record procedure
71438 hemiarch
71438 ''
70333 ''
70333 hemiarch
73236 hemiarch", header=T)