Действительно ли это возможно к строке, связывают два кадра данных, которые не имеют того же набора столбцов? Я надеюсь сохранить столбцы, которые не соответствуют после связывания.
rbind.fill
из пакета plyr
может быть тем, что вы ищете.
Вы можете использовать smartbind
из пакета gtools
.
Example:
library(gtools)
df1 <- data.frame(a = c(1:5), b = c(6:10))
df2 <- data.frame(a = c(11:15), b = c(16:20), c = LETTERS[1:5])
smartbind(df1, df2)
# result
a b c
1.1 1 6 <NA>
1.2 2 7 <NA>
1.3 3 8 <NA>
1.4 4 9 <NA>
1.5 5 10 <NA>
2.1 11 16 A
2.2 12 17 B
2.3 13 18 C
2.4 14 19 D
2.5 15 20 E
Если столбцы в df1 являются подмножеством столбцов в df2 (по именам столбцов):
df3 <- rbind(df1, df2[, names(df1)])
Вы также можете просто извлечь общие имена столбцов.
> cols <- intersect(colnames(df1), colnames(df2))
> rbind(df1[,cols], df2[,cols])
Возможно, я совершенно неправильно понял ваш вопрос, но сообщение «Я надеюсь сохранить столбцы, которые не совпадают после привязки» заставляет меня думать, что вы ищете левое соединение
или правое соединение
похож на SQL-запрос. В R есть функция merge
, которая позволяет указывать левое, правое или внутреннее объединение, подобное объединению таблиц в SQL.
Здесь уже есть отличный вопрос и ответ на эту тему: Как объединить (объединить) фреймы данных (внутренний, внешний, левый, правый)?