2016-04-26 15 views
3

Ich gebe 5 Textdatensätze in R ein read.table. Jeder Datensatz hat die gleiche Farbe. (100 Reihe 50 Spalte). Ich möchte alle fünf Tabellen zusammen in einer Tabelle, die 500 Zeilen * 50 col sein wird. Wer weiß, wie man das macht?R- Union Zwei oder mehrere Tabellen in einem

+2

Betrachten Sie 'rbind()' – User7598

+2

Fyi, das ist nicht was Union bedeutet. – Frank

+0

Ich habe versucht Union, aber es wird eine große Liste, nicht mehr eine Tabelle. – qqqwww

Antwort

0

In Basis R, können Sie wie folgt vorgehen:

# Create some toy data first 
nc <- 50 
nr <- 1000 

# Create five tables with nc columns and nr rows. 
df1 <- as.data.frame(replicate(nc, rnorm(nr))) 
df2 <- as.data.frame(replicate(nc, rnorm(nr))) 
df3 <- as.data.frame(replicate(nc, rnorm(nr))) 
df4 <- as.data.frame(replicate(nc, rnorm(nr))) 
df5 <- as.data.frame(replicate(nc, rnorm(nr))) 

# Join the tables 
df <- rbind(df1, df2, df3, df4, df5) 
dim(df) 
#[1] 5000 50 

Dies gibt Ihnen die 5 Tabellen aufeinander gestapelt, wenn das ist, was Sie suchen . Wenn nicht, sollten Sie ein minimales Beispiel angeben, das Ihr Problem veranschaulicht.

+0

Danke. Es ist was ich suche. Ich bin neu in R. – qqqwww

2

Von Paket dplyr:

install.packages('dplyr') 
library(dplyr) 
new_df <- bind_rows(table1, table2, table3, table4, table5) 
+0

Was ist daran falsch? –

+0

Ich sehe auch nichts falsch. Eigentlich ist 'bind_rows' viel effizienter als' rbind'. – Psidom

+0

Ich sehe auch kein Problem, also upvote von hier. Vielleicht denkt jemand es * übertrieben * ein Paket für ein so einfaches Problem zu benutzen. Während es im Allgemeinen schneller ist (wie @Psidom zeigt), ist die Datengröße so klein, dass es in der Praxis hier (wahrscheinlich) keine Rolle spielt. –

2

Auch wenn es für diese spezielle Frage keine Rolle spielt, kann es dennoch hilfreich sein, verschiedene rbind-Methoden miteinander zu vergleichen. Hier ist ein Vergleich von drei rbind Verfahren von base, data.table und dplyr;

> dim(df) 
[1] 16777216  2 

> microbenchmark(rbind(df,df), rbindlist(list(df,df)), bind_rows(df,df), times = 10) 
Unit: milliseconds 
        expr  min  lq  mean median  uq  max neval cld 
      rbind(df, df) 3824.4208 4052.6405 4288.5569 4239.2416 4557.5736 4685.2155 10 c 
rbindlist(list(df, df)) 272.5048 304.8365 348.0393 357.4388 390.7684 405.0778 10 a 
     bind_rows(df, df) 571.1732 596.2556 715.1572 643.8038 863.5805 927.0341 10 b 
+0

Danke, Psidom. – qqqwww