Exploratoryでは、データフレーム間の結合において欠損値の扱いを制御する機能が搭載されています。デフォルトの設定では、結合キーから欠損値を除外する挙動となっており、意図しないデータ増加や処理の遅延を防止できるようになっています。一方で、「欠損値も結合の対象に入れる」オプションを有効にすることで、結合キーに欠損値を含めて結合できるようになります。
複数のデータソースを結合して分析する必要がある方や、欠損値を含むデータセットを扱う方に役立ちます。
データフレーム間で結合を行う際、結合キーに欠損値が含めたいときもあれば、含めたくないときもある。
結合時に欠損値を結合対象から除外するオプションを活用することで、この問題を解決できます。際しのExploratoryではこのオプションがデフォルトで有効になっています。また、欠損値に意味がある場合は、オプションを変更して欠損値を1つの結合キーとして扱って結合対象に含めることができます。
今回は1行が1人の従業員を表し、列には部署や在職状況、入社日などの情報を持つ従業員データと、1行が1人の従業員を表し、年齢や性別、職位などの属性情報を持つ従業員属性データを利用します。
まず、結合の基本的な操作と欠損値を除外する方法を説明します。
従業員データフレームの「従業員ID」列のヘッダーメニューから「結合」を選択します。
結合先データフレームから「従業員の属性」を選択し、結合キーとして両方の「従業員ID」を使用し、プレビューボタンをクリックすると、結合の結果が表示されます。
このとき、結合ダイアログのオプション設定で「欠損値も結合の対象に入れる」のチェックがデフォルトでオフになっています。
これにより、両方のデータフレームに欠損値が含まれていても、欠損値同士が結合されることなく適切な行数で結合が完了します。
実行ボタンをクリックすると、欠損値を除外した状態で結合が実行され、データ行数が不必要に増加することを防ぐことができます。
場合によっては欠損値にも意味があり、結合対象に含めたいケースがあります。
例えば、従業員データの「職種コード」列に欠損値があり、これが特定の部門(製造ディレクター)を表している場合などです。
このような場合は、職種コード列のヘッダーメニューから「結合」を選択します。
結合先データフレームとして「従業員の職種コード」を選択し、両方の「職種コード」を結合キーとして指定します。
結合ダイアログのオプション設定で「欠損値も結合の対象に入れる」にチェックを入れ、プレビューボタンをクリックします。
これにより、職種コードが欠損値のデータも適切に結合され、関連する情報が追加されます。
今回の従業員データを使って、欠損値を結合キーに含めて、従業員_職種コードのデータを結合(左外部結合/left join)したい場合、以下のRコードのサンプルをご参考ください。
#従業員_職種コードのデータを、欠損値を含む「職種コード」をキーにして結合する
#従業員_職種コード欠損値を結合キーに含めたいときには、na_matchesの引数に"na"を指定する
left_join(`従業員_職種コード`, by = join_by(`職種コード` == `職種コード`), na_matches = "na")