скопировать содержимое ячейки процедуры дублированного record_number в пустой идентичный дубликат - PullRequest
0 голосов
/ 15 октября 2019

У меня большой набор данных. По сути, я хочу скопировать содержимое ячейки процедуры дублированного номера записи в пустой идентичный дубликат (как показано на рисунке)

    df<- read.table(text = 
    "record procedure
71438   hemiarch
71438   
70333   
70333   ET
73236   hemiarch
73216   ET
73246   hemiarch
73206   arch
70334   
70334   ET
", sep="\t", header=T)

enter image description here

Любой советс благодарностью.

1 Ответ

1 голос
/ 15 октября 2019

В поисках подходящего дубликата (я уверен, что есть один). Тем временем ...

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)
...