#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
, поэтому вы, вероятно, захотите преобразовать его обратно впоследствии.