Существует ли функция R для объединения нескольких фреймов данных по вертикали по строкам?

#r #dataframe #merge #rows

Вопрос:

Я хотел знать, существует ли функция R, которая добавляет строки из нескольких фреймов данных в один фрейм данных по вертикали. Столбцы моих наборов данных разные и имеют разные имена, поэтому я не могу использовать rbind(). Я попробовал bind_rows() и smartbind (), но все равно получил вывод горизонтальным способом.

Ответ №1:

Это менее очевидно, чтобы понять, как это сделать, чем я думал: если вы попытаетесь

 rbind(unname(x), unname(y))  

затем R выдает ошибку.

Самый простой способ, который я нашел, состоял в том, чтобы преобразовать данные.кадры в матрицы перед их привязкой:

 as.data.frame(rbind(as.matrix(x), as.matrix(y)))  

В данном случае результирующий data.frame имеет те же имена столбцов, что и первый заданный data.frame x . Однако вам все равно нужно, чтобы в data.frames было одинаковое количество столбцов.

За пределами базы R data.table пакет имеет версию rbind , которая может игнорировать имена при привязке:

 library(data.table) rbind(as.data.table(x), as.data.table(y), use.names = FALSE)  

Однако это вернет a data.table , а не a data.frame , поэтому вы, вероятно, захотите преобразовать его обратно впоследствии.