2016-08-12 3 views
0

Предположим, у вас есть 4 или более файлов csv, и я просто хочу их объединить и распечатать вывод!Объединить различные кадры данных в R.

Я открыл файлы так:

df1 <- read.csv("file1", sep ='\t') 
df2 <- read.csv("file2", sep ='\t') 
df3 <- read.csv("file3", sep ='\t') 
df4 <- read.csv("file4", sep ='\t') 

Загвоздка в том, что все файлы имеют разное количество строк и столбцов, и нет, одинаковых имен столбцов. Мой профессор сказал просто объединить их, так что я ожидаю выход быть что-то вроде этого

file1.column11 ... file1.column1N file2.column21 ... file2.column2N ... 
value11 ... value1N NA ... NA 
. 
. 
. 
NA ... NA value21 ... value2N 

Можно ли это сделать как-то? Я использую слияние(), join_all() и другие вещи, и я не могу добраться до нижней частью этого ...

Я очень новый для Р.

+0

Посмотрите на эту предыдущую нить, которая может быть полезна: http://stackoverflow.com/questions/6988184/combining-two-data-frames-of-different-lengths – jtclaypool

ответ

0

В общем, есть нет конкретного способа слияния кадра данных с различным контентом.

Вам нужно решить, как вы хотите объединить наборы данных. Некоторые вещи, о которых нужно подумать:

  • У любого из наборов данных одинаковые вещи в любых столбцах (даже если имена столбцов различны)?
  • Какие биты данных вы хотите сохранить/выбросить?
  • Какие биты данных являются общими для всех наборов данных?
  • Какое отношение имеют другие столбцы? Есть ли связь один-к-одному или один-ко-многим между любыми столбцами?
1

Правильно ли это: у вас нет одинаковых имен столбцов? Если да, то вы можете «объединить» их бок о бок, только если у них есть один столбец, по значениям которого они будут объединены, например, вы могли бы иметь столбец за год или идентификатор объекта и т. Д. Затем вы пишете: file.overall < - merge (file1, file2, by = "common_column_name") Затем вы подключаете следующий файл: file.overall2 < - merge (file.overall, file2, by = "common_column_name") последовательно, вы добавляете все файлы.

Если вы хотите, чтобы столбцы имеют разные имена, просто переименовать столбцы заранее: имен (file1) < - с («file1.coulmn1_name», ...)

С другой стороны, если вы хотите «объединять» файлы друг с другом, чем все ваши столбцы должны иметь одинаковые имена, и вы можете использовать операнд rbind, как было предложено в предыдущем сообщении.

Надеюсь, это поможет, Счастливое кодирование!

0

Если все кадры данных имеют разные имена строк, то их можно объединить следующим образом:

merge(df1, df2, by="row.names", all.x=T, all.y=T) 

В противном случае, если у вас есть plyr установлен, вы можете просто сделать следующее (это будет заполнить все пустые клетки с НСБУ):

library(plyr) 
rbind.fill(df1, df2) 
Смежные вопросы