У меня есть два кадра данных, которые необходимо объединить в один соответствующий столбец, а вторая таблица должна заменить все значения в первой таблице, где столбцы совпадают.
Я пробовал несколько вариантов приведенного ниже кода, но ничто не возвращает кадр данных того же размера, что и оригинал.
merge.data.frame(x, y, by.x = "Name", by.y = "Name")
merge.data.frame(x, y, by.x = "SN", all.x = FALSE,y all.y = TRUE)
Переменные, используемые для этого, показаны ниже
x <- data.frame("SN" = 1:4, "Age" = c(21,15,44,55), "Name" = c("John","Dora", NA, NA))
y <- data.frame("SN" = 4, "Age" = c(100), "Name" = c("B"))
SN Age Name # x dataframe
1 1 21 John
2 2 15 Dora
3 3 44 NA
4 4 55 NA
SN Age Name # y dataframe
5 4 100 B
Окончательный результат кадра данных должен быть следующим:
Присоединяется к «SN» и перезаписывает значения в столбцах «Возраст» и «Имя», заменяя то, что в х, на то, что в у.
SN Age Name # result
1 1 21 John
2 2 15 Dora
3 3 44 NA
4 4 100 B
Редактировать: Если у вас есть дополнительные столбцы, как показано на приведенном ниже кадре данных, которых нет в y
SN Gender Age Name # z table with additional column
1 1 M 21 John
2 2 F 15 Dora
3 3 M 44 NA
4 4 M 55 NA
Запуск приведенного ниже кода из пакета plyr приведет к удалению ненужных столбцов
library(plyr)
rbind.fill(z[!z$SN %in% y$SN,], y[,])
SN Gender Age Name # result if additional columns are present in z and not in y
1 1 M 21 John
2 2 F 15 Dora
3 3 M 44 NA
4 4 M 100 B