SQLの外部結合 (Outer Join)、特に LEFT OUTER JOIN に対応するR言語の書き方を解説します。
R言語では、主に dplyr パッケージの left_join() 関数を使用して、この操作を実行します。
🤝 外部結合 (LEFT OUTER JOIN) の対応
SQLの LEFT OUTER JOIN は、左側のテーブル(TABLE1)のすべての行を保持し、結合キーが一致する右側のテーブル(TABLE2)の行を結合します。一致する行が右側のテーブルにない場合でも、左側の行は保持され、右側の列には欠損値 (NULL に相当) が入ります。
R言語の dplyr パッケージでは、left_join() 関数がこの役割を果たします。
| SQL構文 | R言語 (dplyr) | 説明 |
SELECT * FROM TABLE1 LEFT OUTER JOIN TABLE2 ON T1.KEY = T2.KEY | TABLE1 %>% left_join(TABLE2, by = "KEY") | 左側のデータフレーム (TABLE1) の全行を保持し、KEY 列で右側のデータフレーム (TABLE2) を結合します。 |
1. R言語での基本的な書き方
SQLの例題に基づき、TABLE1 を左、TABLE2 を右として結合します。
R
# SQL: SELECT * FROM TABLE1 LEFT OUTER JOIN TABLE2 ON TABLE1.KEY = TABLE2.KEY
# R言語:
library(dplyr)
# TABLE1を左側のデータフレームとして開始
TABLE1 %>%
left_join(
TABLE2, # 右側のデータフレームを指定
by = "KEY" # 結合キー(ON句)を指定
)
2. キー名が左右で異なる場合の対応
SQLで ON T1.KEY1 = T2.KEY2 のように、結合キーの列名が左右で異なる場合にも対応できます。
| SQLのON句 | R言語の by 引数 |
ON T1.ID = T2.ReferenceID | by = c("ID" = "ReferenceID") |
コード例(キー名が異なる場合)
R
# SQL: SELECT * FROM Employees LEFT JOIN Departments ON Employees.DeptID = Departments.ID
# R言語:
Employees %>%
left_join(
Departments,
by = c("DeptID" = "ID") # 左の"DeptID"と右の"ID"で結合する
)
💡 その他の結合(JOIN)の対応
R言語の dplyr では、他のSQLの結合タイプにも直感的に対応する関数が用意されています。
| SQLの結合タイプ | R言語 (dplyr 関数) | 説明 |
| INNER JOIN | inner_join() | 両方のテーブルにキーが一致する行のみを保持します。 |
| RIGHT OUTER JOIN | right_join() | 右側のテーブルの全行を保持し、一致しない左側の列は NA になります。 |
| FULL OUTER JOIN | full_join() | 両方のテーブルの全行を保持し、一致しないセルは NA になります。 |
| CROSS JOIN | cross_join() | 全ての組み合わせを生成します(by 引数不要)。 |
これで、SQLの外部結合(LEFT OUTER JOIN)に対応するR言語の書き方を理解いただけたと思います。