結合: 列を追加して、結合キーとして利用したい

データを結合する際、結合キーとなる列が存在しない場合があります。そのような場合、既存のデータに新しい列を追加して結合キーとして利用することで、適切なデータの結合が可能となり、今回はそのやり方を紹介します。

問題

複数のデータを結合する際に、単一の列だけでは適切な結合ができないケースがあります。一方で、結合元あるいは結合先に結合するためのキーがないときには、結合が可能なようにキー列の作成が必要になることがあります。

解決方法

今回は、以下の3つのデータを利用します。

注文(オーダー)データ

1行が1つの注文を表し、列には注文日、顧客ID、製品ID、注文数、顧客区分の情報が含まれます。

会員向けの価格テーブル

1行が1つの製品の会員向けの価格を表します。

非会員向けの価格テーブル

1行が1つの製品の非会員向けの価格を表します。

オーダーのデータに、会員向けと非会員向けの価格を結合したいときに、製品IDだけで結合すると、適切な結合ができません。

一方で、それぞれの価格テーブルには、会員の区分の情報がないため、「製品ID」と「顧客区分」で結合することができません。

一方で、それぞれの価格テーブルに以下のよう会員の区分の情報があれば、その「製品ID」と「顧客区分」の情報をもとにそれぞれのテーブルを簡単に結合できます。

そこでまずは、2つの価格テーブルに顧客区分の情報を追加します。

まずは会員向け価格テーブルに移動し、任意の列ヘッダーメニューから「計算を作成」の「標準」を選択します。

計算を作成のダイアログが開いたら、計算エディタに"会員"と入力し、新しく列を作成にチェックを入れ、列名を「区分」と指定します。

会員向け価格テーブルに顧客区分の列を追加できました。

続いて、非会員向け価格テーブルに移動し、同じ処理を行います。任意の列ヘッダーメニューから「計算を作成」の「標準」を選択します。

計算を作成のダイアログが開いたら、計算エディタに"非会員"と入力し、新しく列を作成にチェックを入れ、列名を「区分」と指定します。

これで非会員向けの価格テーブルに顧客区分の列を追加できました。

次に注文データに価格の情報を結合していきます。

このとき、価格のデータを結合する2つの方法があるので、ここからはそちらを紹介します。

1つ目の方法はそれぞれの価格テーブルを個別にオーダーのデータに結合して後から1つの列にまとめる方法で、2つ目の方法は、あらかじめ、会員向けと非会員向けの統合した価格データを用意して、オーダーのデータに結合するやり方です。

ここからはそれぞれのやり方を紹介します。

価格テーブルを個別にオーダーのデータに結合するアプローチ

オーダーデータの「製品ID」の列ヘッダーメニューから「結合」を選択します。

結合先のデータフレームで「会員向け価格テーブル」を選択します。

キー列の追加をクリックし、顧客区分と区分を選択します。

プレビューを確認後、実行します。

これで会員向けの価格の情報を追加できました。

続いて非会員向け価格を結合します。

再び、「製品ID」の列ヘッダーメニューから「結合」を選択します。

結合先のデータフレームで「非会員向け価格テーブル」を選択します。

キー列の追加をクリックし、顧客区分と区分を選択し、プレビューを確認後、実行します。

これで2つのタイプの価格を追加できました。

ただしこの時点で、価格は1つの列に統一されていません。そこで、2つに列に分かれている情報を1つにまとめていきます。

任意の列ヘッダーメニューから「欠損値の加工」、「欠損値を別の列の値で埋める」を選択します。

計算を作成ダイアログが開いたら、計算エディタにcoalesce(価格.x, 価格.y)を指定し、新しく列を作成にチェックをつけ、列名を「価格」に指定して実行します。

これで価格を1つにまとめることができました。(必要に応じて、不要な列は削除してください)

会員と非会員向けの統合した価格データを用意して、オーダーのデータに結合するアプローチ

会員向け価格テーブルに移動して、ステップメニューから「マージ」を選択します。(2つのテーブルの列名が異なる場合、あらかじめ列名が同じになるようにしてください)

マージするデータフレームとして「非会員向け価格テーブル」を選択し、データフレーム名を保持のチェックを外し、実行します。

これで、1つのテーブルに会員向けと非会員向けのデータをまとめられました。

最後にオーダーと価格テーブルを結合します。

オーダーデータの「製品ID」の列ヘッダーメニューから「結合」を選択します。

結合先のデータフレームで「会員向け価格テーブル」を選択します。

キー列の追加をクリックし、顧客区分と区分を選択します。

プレビューを確認後、実行します。

これで価格の情報をオーダーのデータに結合できました。

ビデオ

参考情報

Export Chart Image
Output Format
PNG SVG
Background
Set background transparent
Size
Width (Pixel)
Height (Pixel)
Pixel Ratio