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応用 複数のデータフレームを一括して内外部結合する方法