2016-08-12 4 views
0

Angenommen, Sie haben 4 oder mehr CSV-Dateien und ich möchte sie nur zusammenführen, und drucken Sie die Ausgabe!Mischen Sie unterschiedlich große Datenrahmen in R.

öffnete ich die Dateien wie folgt:

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

Der Haken ist, dass alle Dateien beiden Zeilen und Spalten unterschiedliche Anzahl von haben und keine identische Spaltennamen. Mein Professor sagte, dass sie einfach zusammengeführt werden sollen, also erwarte ich, dass die Ausgabe ungefähr so ​​aussieht:

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

Kann das irgendwie gemacht werden? Ich habe mit merge(), join_all() und anderen Sachen, und ich kann nicht auf den Grund gehen ...

Ich bin auch sehr neu für R.

+0

Blick auf diesem früheren Thread, der nützlich sein kann: http://stackoverflow.com/questions/6988184/combining-two-data-frames-of-different-lengths – jtclaypool

Antwort

0

In der Regel gibt es keine spezielle Möglichkeit, Datenrahmen mit unterschiedlichen Inhalten zusammenzuführen.

Sie müssen herausfinden, wie Sie die Datensätze zusammenführen möchten. Einige Dinge, über die Sie nachdenken sollten:

  • Hat einer der Datensätze in jeder Spalte den gleichen Typ (auch wenn die Spaltennamen unterschiedlich sind)?
  • Welche Bits der Daten möchten Sie behalten/verwerfen?
  • Welche Datenbits sind allen Datensätzen gemeinsam?
  • Welche Beziehung haben andere Spalten? Gibt es eine Eins-zu-Eins oder Eins-zu-Viele Beziehung zwischen Spalten?
1

Ich verstehe es richtig: Sie haben keine identischen Spaltennamen? Wenn ja, dann können Sie sie nur nebeneinander verschmelzen, wenn sie nur eine Spalte haben, deren Werte zum Beispiel zusammengeführt werden. Sie könnten beispielsweise eine Spalte für das Jahr oder eine Betreff-ID haben. Dann Sie schreiben: fusionieren (file.overall, file2, durch = "common_column_name") -: - file.overall2 < file.overall < fusionieren (file1, file2, durch = "common_column_name") Als nächstes Sie die nächste Datei verbinden nacheinander fügen Sie alle Dateien hinzu.

Wenn Sie die Spalten unterschiedliche Namen haben möchten, benennen Sie die Spalten vorher: Namen (file1) < - c ("file1.coulmn1_name", ...)

Auf der anderen Seite, wenn Sie wollen Um alle Dateien untereinander zu "verschmelzen", müssen alle Spalten denselben Namen haben. Sie können den Operanden rbind verwenden, wie in der vorherigen Nachricht vorgeschlagen.

Hoffe, das hilft, Happy Codierung!

0

Wenn alle Datenrahmen unterschiedliche Zeilennamen haben, können Sie sie auf folgende Weise zusammen:

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

Andernfalls, wenn Sie plyr installiert haben, können Sie das folgende gerade tun (es wird alles leer füllen Zellen mit NAs):

library(plyr) 
rbind.fill(df1, df2) 
Verwandte Themen