R言語で複複数のデータフレームを一括して内外部結合する方法をお伝えします。
準備
あらかじめ、tidyverseパッケージを読み込んでおきます。
library(tidyverse)
説明にあたり、複数のデータフレームを準備します。
df1 <- data.frame(
ID = seq(1, 5),
C1 = letters[1:5]
)
df2 <- data.frame(
ID = seq(1, 5),
C2 = letters[6:10]
)
df3 <- data.frame(
ID = seq(1, 5),
C3 = letters[11:15]
)
df1
ID C1
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
df2
ID C2
1 1 f
2 2 g
3 3 h
4 4 i
5 5 j
df3
ID C3
1 1 k
2 2 l
3 3 m
4 4 n
5 5 o
複数のデータフレームを一括して内部結合する方法
複数のデータフレームを一括して内部結合するコードは次になります。reduce()はtidyverseパッケージに含まれているpurrrパッケージの関数です。
reduce(list(df1, df2, df3), inner_join, by = join_by(ID))
ID C1 C2 C3
1 1 a f k
2 2 b g l
3 3 c h m
4 4 d i n
5 5 e j o
このコードを簡単に説明すると、次になります。
- reduce()は、最初に第一引数のリストから2つとってinner_joinを実行したあと、その結果と第一引数のリストの3番目の2つでinner_joinします。つまり、次のような動作になります。
- inner_join(inner_join(df1, df2, by = join_by(ID)), df3, by = join_by(ID))
R応用 複数のデータフレームを一括して内外部結合する方法