Заполните NA с Non-NA в другом фрейме данных

У меня есть три набора данных с двумя переменными «ID» и «Имя». Есть ли способ восполнить недостающие данные в каждом наборе данных из другого набора данных или создать основной набор данных с комбинацией идентификатора и имени?

setA=data.frame(rbind(
                      c("1","Product A"),
                      c("2",NA),
                      c("3",NA),
                      c("4",NA),
                      c("5","Product E")))
names(setA)=c("ID","Name")

setB=data.frame(rbind(
                      c("1","Product A"),
                      c("2",NA),
                      c("3","Product C"),
                      c("4",NA),
                      c("6","Product F")))
names(setB)=c("ID","Name")

setC=data.frame(rbind(
                      c("1",NA),
                      c("2","Product B"),
                      c("3","Product C"),
                      c("4","Product D"),
                      c("6","Product F")))
names(setC)=c("ID","Name")

Я пробовал это, но он два раза перечисляет ID "3". Я хочу, чтобы НС заполнило «Продукт C».

merge(setA,setB,by=c("ID","Name"),all=T)

Я могу объединить только ID и заменить NA на не-NA, но мне было интересно, есть ли более простой способ сделать это?

Спасибо!


person user3641630    schedule 26.01.2016    source источник


Ответы (1)


Я не знаю, можно ли обобщить приведенное ниже решение, но на основе вашего примера следующий код поможет (предполагается, что имя существует хотя бы один раз для каждого идентификатора и является уникальным):

setM <- rbind(setA,setB,setC)
setM <- unique(na.omit(setM))
person teucer    schedule 26.01.2016