R で複数のデータ フレームをマージする方法 (例あり)


R で複数のデータ フレームをマージするには、次の 2 つの方法のいずれかを使用できます。

方法 1: Base R を使用する

 #put all data frames into list
df_list <- list(df1, df2, df3)

#merge all data frames into list
Reduce(function(x, y) merge(x, y, all= TRUE ), df_list)

方法 2: Tidyverse を使用する

 library (tidyverse)

#put all data frames into list
df_list <- list(df1, df2, df3)

#merge all data frames into list
df_list %>% reduce(full_join, by=' variable_name ')

次の例は、各メソッドを実際に使用する方法を示しています。

方法 1: Base R を使用して複数のデータ フレームを結合する

R に次のデータ フレームがあるとします。

 #define data frames
df1 <- data. frame (id=c(1, 2, 3, 4, 5),
                  revenue=c(34, 36, 40, 49, 43))

df2 <- data. frame (id=c(1, 2, 5, 6, 7),
                  expenses=c(22, 26, 31, 40, 20))

df3 <- data. frame (id=c(1, 2, 4, 5, 7),
                  profit=c(12, 10, 14, 12, 9))

次の構文を使用して、R 基本関数を使用してすべてのデータ フレームをマージできます。

 #put all data frames into list
df_list <- list(df1, df2, df3)      

#merge all data frames together
Reduce(function(x, y) merge(x, y, all= TRUE ), df_list)  

  id revenue expenses profit
1 1 34 22 12
2 2 36 26 10
3 3 40 NA NA
4 4 49 NA 14
5 5 43 31 12
6 6 NA 40 NA
7 7 NA 20 9

元のデータ ブロックのそれぞれの「id」値が最終データ ブロックに含まれることに注意してください。

方法 2: Tidyverse を使用して複数のデータ フレームを結合する

R に次のデータ フレームがあるとします。

 #define data frames
df1 <- data. frame (id=c(1, 2, 3, 4, 5),
                  revenue=c(34, 36, 40, 49, 43))

df2 <- data. frame (id=c(1, 2, 5, 6, 7),
                  expenses=c(22, 26, 31, 40, 20))

df3 <- data. frame (id=c(1, 2, 4, 5, 7),
                  profit=c(12, 10, 14, 12, 9))

次の構文を使用すると、R のデータ サイエンス用に設計されたパッケージのコレクションであるTidyverseの関数を使用してすべてのデータ フレームをマージできます。

 library (tidyverse)

#put all data frames into list
df_list <- list(df1, df2, df3)      

#merge all data frames together
df_list %>% reduce(full_join, by=' id ')

  id revenue expenses profit
1 1 34 22 12
2 2 36 26 10
3 3 40 NA NA
4 4 49 NA 14
5 5 43 31 12
6 6 NA 40 NA
7 7 NA 20 9

最終的なデータ フレームは、最初の方法を使用して生成したデータ フレームと一致することに注意してください。

: 非常に大きなデータ フレームを扱う場合、Tidyverse のアプローチは著しく高速になります。

追加リソース

次のチュートリアルでは、R で他の一般的な関数を実行する方法について説明します。

R の複数の列に基づいてデータ フレームをマージする方法
R でデータ フレーム列をスタックする方法
Rでanti_joinを使用する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です