Skip to content

データの結合を学ぶ

データの結合

データの結合は、2つのデータセットを一定のルールに基づいてまとめる操作です。以下に、様々な結合方法の説明と具体的な例を示します。

共通部分を残す (inner join)

2つのデータセットの共通部分のみを結果として残します。

左のデータ

ID名前
1田中
2佐藤
3鈴木

右のデータ

ID年齢
225
330
428
結合結果
ID名前年齢
2佐藤25
3鈴木30

左側のデータを残す (left join)

左のデータセットの全てのデータを残し、右のデータセットとマッチするデータがあれば結合します。マッチしない場合は、右の部分に<NA>が表示されます。

左のデータ

ID名前
1田中
2佐藤
3鈴木

右のデータ

ID年齢
225
330
428
結合結果
ID名前年齢
1田中<NA>
2佐藤25
3鈴木30

右側のデータを残す (right join)

右のデータセットの全てのデータを残し、左のデータセットとマッチするデータがあれば結合します。マッチしない場合は、左の部分に<NA>が表示されます。

左のデータ

ID名前
1田中
2佐藤
3鈴木

右のデータ

ID年齢
225
330
428
結合結果
ID名前年齢
2佐藤25
3鈴木30
4<NA>28

左右両方のデータを残す (outer join)

左のデータセットと右のデータセットの両方のデータを残します。
マッチしない場合は、該当する部分に<NA>が表示されます。

左のデータ

ID名前
1田中
2佐藤
3鈴木

右のデータ

ID年齢
225
330
428
結合結果
ID名前年齢
1田中<NA>
2佐藤25
3鈴木30
4<NA>28

右に存在しない左のデータを残す (left anti join)

左のデータセットの中で、右のデータセットとマッチしないデータのみを残します。

左のデータ

ID名前
1田中
2佐藤
3鈴木

右のデータ

ID年齢
225
330
428
結合結果
ID名前
1田中

左に存在しない右のデータを残す (right anti join)

右のデータセットの中で、左のデータセットとマッチしないデータのみを残します。

左のデータ

ID名前
1田中
2佐藤
3鈴木

右のデータ

ID年齢
225
330
428
結合結果
ID年齢
428

組み合わせの爆発

データを結合する際、キーとして使用する列に重複した要素が存在すると、予期しない数の行が生成されることがあります。
これを「組み合わせの爆発」と呼び、誤ったデータを生み出す可能性があります。
ゆえに、nehan の「キー列を指定する結合」において、組み合わせ爆発が発生した場合は強制的にエラーが発生します。(オプションで制御は可能)

左のデータ

キー名前
A田中
A佐藤
B鈴木

右のデータ

キー年齢
A25
A28
B30

上記のデータで、“キー”列を基に結合すると以下のようになります。

結合結果

キー名前年齢
A田中25
A田中28
A佐藤25
A佐藤28
B鈴木30

左のデータのキー A に対して 2 つの行が、右のデータのキー A に対しても 2 つの行が存在するため、結合結果はキー A に対して 4 つの行が生成されました。
これが「組み合わせの爆発」の例です。