web-dev-qa-db-ja.com

Append \ Union2つまたは複数のテーブルを1つに

read.tableを使用して5つのテキストデータセットをRに入力します。各データセットの構造は同じです(100行、50列)。 5つのテーブルすべてを1つのテーブルにunion\appendしたいと思います。これは、500行* 50列になります。誰もがそれを行う方法を知っていますか?

7
qqqwww

ベースRでは、次のことができます。

# 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

それがあなたが探しているものであるならば、これはあなたに互いに積み重ねられた5つのテーブルを与えます。そうでない場合は、問題を説明する最小限の例を提供する必要があります。

パッケージdplyrから:

install.packages('dplyr')
library(dplyr)
new_df <- bind_rows(table1, table2, table3, table4, table5)
11
Raphael K

この特定の質問には関係ありませんが、さまざまなrbindメソッドを比較しておくと役立つ場合があります。これは、rbinddata.table、およびbaseの3つの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 
6
Psidom