Объедините два кадра данных строками (rbind), когда у них будут различные наборы столбцов

Действительно ли это возможно к строке, связывают два кадра данных, которые не имеют того же набора столбцов? Я надеюсь сохранить столбцы, которые не соответствуют после связывания.

207
задан zx8754 19 June 2017 в 21:54
поделиться

5 ответов

rbind.fill из пакета plyr может быть тем, что вы ищете.

204
ответ дан 23 November 2019 в 04:44
поделиться

Вы можете использовать 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
47
ответ дан 23 November 2019 в 04:44
поделиться

Если столбцы в df1 являются подмножеством столбцов в df2 (по именам столбцов):

df3 <- rbind(df1, df2[, names(df1)])
40
ответ дан 23 November 2019 в 04:44
поделиться

Вы также можете просто извлечь общие имена столбцов.

> cols <- intersect(colnames(df1), colnames(df2))
> rbind(df1[,cols], df2[,cols])
18
ответ дан 23 November 2019 в 04:44
поделиться

Возможно, я совершенно неправильно понял ваш вопрос, но сообщение «Я надеюсь сохранить столбцы, которые не совпадают после привязки» заставляет меня думать, что вы ищете левое соединение или правое соединение похож на SQL-запрос. В R есть функция merge , которая позволяет указывать левое, правое или внутреннее объединение, подобное объединению таблиц в SQL.

Здесь уже есть отличный вопрос и ответ на эту тему: Как объединить (объединить) фреймы данных (внутренний, внешний, левый, правый)?

1
ответ дан 23 November 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: