公開日: 04/01/2021

データテーブルの結合例

次の節では、[結合(Join)]コマンドの使用例を説明します。

行番号による結合の例

行番号に基づいてテーブルを結合すると、2つのテーブルは横に並べて結合されます。新しいテーブルには、特定の列だけを含むように指定しない限り、両方のテーブルからのすべての列が含まれます。

行数の異なるテーブルを結合するには

行数が異なる2つのテーブルを結合すると、新しいテーブルには、両方のテーブル内の行の値がすべて含まれます。

1. [ヘルプ]>[サンプルデータライブラリ]を選択し、「Species1.jmp」「Species2.jmp」を開きます。

「Species1.jmp」テーブルには2つ、「Species2.jmp」テーブルには4つの行があります。

2. 「Species1.jmp」テーブルから、[テーブル]>[結合(Join)]を選びます。

3. 「'Species1'と結合するテーブル」「Species2」を選択します。

4. 「対応の指定」で、[行番号で対応]を選択します。

5. [OK]をクリックします。

図6.23 行番号によるテーブルの結合 

Image shown here

2行のテーブルと4行のテーブルを結合すると、新しいテーブルは4行になります。

同じ名前の列があるテーブルを結合するには

2つのテーブルに同じ名前の列がある場合、新しいテーブルでは、これらの列の名前は「テーブル名列名」となります。たとえば、図6.24に示す「Trial1.jmp」「Trial2.jmp」の各データテーブルから8つの行を1つのテーブルに結合するとします。新しいテーブルに、両方のテーブルからのすべての列が含まれるように結合します。

1. [ヘルプ]>[サンプルデータライブラリ]を選択し、「Trial1.jmp」「Trial2.jmp」を開きます。

2. 「Trial1.jmp」テーブルから、[テーブル]>[結合(Join)]を選びます。

3. 「'Trial1'と結合するテーブル」「Trial2」を選択します。

4. 「対応の指定」で、[行番号で対応]を選択します。

5. [OK]をクリックします。

図6.24 元のテーブルと結合後のテーブル 

Image shown here

元の2つのテーブルで、列名が同じ場合があります。その場合、出力テーブルの列名には元のテーブルの名前が付加されます。たとえば、新しいテーブルの列名は「テーブル名の<変数名>」というように表示されます。

指定した列だけを結合するには

元のテーブルの列をすべて結合後のテーブルに含める必要がない場合もあります。そのような場合は、次の手順を行います。

1. [ヘルプ]>[サンプルデータライブラリ]を選択し、「Trial1.jmp」「Trial2.jmp」を開きます。

2. 「Trial1.jmp」テーブルから、[テーブル]>[結合(Join)]を選びます。

3. 「'Trial1'と結合するテーブル」「Trial2」を選択します。

4. 「対応の指定」で、[行番号で対応]を選択します。

5. [テーブル結合のために列を選択]をクリックし、結合後のテーブルに含める列を指定します。

6. 「元の列」の「Trial1」リストから「コーンの種類」「収率」を選択し、「Trial2」リストから「収率」を選択します。

両方のテーブルで「コーンの種類」列のデータは同一であるため、いずれか片方の列だけを選択すれば十分です。

7. [選択]をクリックします。

8. [OK]をクリックします。

図6.25 指定した列だけを結合 

Image shown here

直積結合の例

直積で結合すると、2つの元のデータテーブルの行の可能な組み合わせがすべて含まれた新しいテーブルが作成されます。出力テーブルには、列の値の組み合わせごとに1行が作成されます。

直積結合の単純な例

1. [ヘルプ]>[サンプルデータライブラリ]を選択し、「Species1.jmp」「Species2.jmp」を開きます。

2. 「Species1.jmp」テーブルから、[テーブル]>[結合(Join)]を選びます。

3. 「'Species1'と結合するテーブル」「Species2」を選択します。

4. 「対応の指定」で、[直積]を選択します。

5. [OK]をクリックします。

図6.26 直積を使ったテーブルの結合 

Image shown here

「Species1.jmp」のデータと「Species2.jmp」のデータを組み合わせて新しいテーブルが作成され、値のすべての組み合わせがセットで表示されます。

直積結合の複雑な例

この例では、[テーブル]>[結合(Join)]コマンドを2回使います。

最初の結合では、[直積]オプションを使って、「Oil Amount.jmp」テーブルを「Batch.jmp」テーブルと組み合わせます。

2番目の結合では、結果のテーブル(「Oil Amount+Batch」)と「Popcorn Type.jmp」テーブルを組み合わせて、すべてのテーブルを結合した最終的なテーブルを作成します。

1. [ヘルプ]>[サンプルデータライブラリ]を選択し、「Oil Amount.jmp」「Batch.jmp」、および「Popcorn Type.jmp」を開きます。

2. 「Oil Amount.jmp」テーブルから、[テーブル]>[結合(Join)]を選びます。

3. 「'Oil Amount.jmp'と結合するテーブル」「Batch」を選択します。

4. 「対応の指定」で、[直積]を選択します。

5. 「出力テーブル名」「Oil Amount+Batch」と入力します。

6. [OK]をクリックします。

図6.27 結合後の「Oil Amount+Batch」テーブル 

Image shown here

結合後のテーブルには、「Oil Amount.jmp」テーブルと「Batch.jmp」テーブルの列がすべて含まれています。次の手順を行い、「Popcorn Type.jmp」の列を追加します。

7. 前の手順で作成した「Oil Amount+Batch」テーブルから、[テーブル]>[結合(Join)]を選びます。

8. 「'Oil Amount+Batch'と結合するテーブル」「Popcorn Type」を選択します。

9. 「対応の指定」で、[直積]を選択します。

10. [OK]をクリックします。

図6.28 「Oil Amount+Batch」と「Popcorn Type」の結合 

Image shown here

最終的なテーブルには、3つのテーブルの列がすべて含まれています。直積で生成される行数は、元のテーブルの行数の積になります。

対応する列の値による結合の例

対応する列の値でデータテーブルを結合する場合は、両方のテーブルに存在する、指定された列の値が検索されます。そして、値が一致する行を結合することにより、新しいデータテーブルが作成されます。

対応する列の値で結合するためには、両方のテーブルの列に同じタイプのデータ(数値、文字、または行の属性)が含まれている必要があります。

重複する値や行をデータテーブルから削除するために、データテーブルをそのテーブル自身に結合するという使い方もできます。

行の順序が異なるテーブルを結合するには

1. [ヘルプ]>[サンプルデータライブラリ]を選択し、「Students1.jmp」「Students2.jmp」を開きます。

「Students1.jmp」データテーブルには、学生の名前、年齢、性別が記録されています。「Students2.jmp」データテーブルには、学生の名前、身長、体重が記録されています。2つのテーブルを個別に操作する代わりに、両方を組み合わせて1つのテーブルにしてみましょう。両方のテーブルで、学生の名前の並び順は異なっています。たとえば、Aliceは行7と行9にそれぞれ記録されています。

2. 「Students1.jmp」テーブルから、[テーブル]>[結合(Join)]を選びます。

3. 「'Students1'と結合するテーブル」「Students2」を選択します。

両方のテーブルに同じ値を含む列(「名前」)があるので、それらの列を対応列として指定します。すると、最初のテーブルの「名前」列の各値をもとに、2番目のテーブルの「名前」列に同じ値があるかどうかが調べられます。たとえば、両方のテーブルにAliceという値があることが検出されると、新しいテーブルの「名前」列にAliceという値が挿入され、一方のテーブルからAliceの年齢と性別が、もう一方のテーブルからAliceの身長と体重が取り出され、新しいテーブルに追加されます。

4. 「対応の指定」で、[対応する列の値で結合]を選びます。

5. 「Students1」リストと「Students2」リストから[名前]を選択します。

6. [対応]をクリックします。

7. それぞれの名前について1行ずつのデータのみが必要なため、両方のテーブルの[重複する行を削除]ボックスをオンにします。

8. [OK]をクリックします。

図6.29 結合後のテーブル 

Image shown here

異なる行数と列名を持つテーブルを結合するには

サラとジョーは、それぞれポップコーンの実験に取り組んでいます。異なる種類のコーン(グルメとプレーン)を油の量を変えてポップし、でき上がったポップコーンの量(収率)を記録しています。サラは、実験データを「Trial1.jmp」というファイルに、ジョーは、実験データを「Little.jmp」というファイルに保存しました。この2つのテーブルを1つのテーブルに結合してみましょう。

1. [ヘルプ]>[サンプルデータライブラリ]を選択し、「Trial1.jmp」「Little.jmp」を開きます。

2. 「Trial1.jmp」テーブルから、[テーブル]>[結合(Join)]を選びます。

3. 「'Trial1'と結合するテーブル」ボックスで、「Little」を選択します。

両方のテーブルで、3つの列(「コーンの種類」「油の量」/「油」「一回にポップする量」)に記録されている値は同じです。これらの列を対応列として指定します。また、サラとジョーは油の量に関する列に「油の量」「油」という異なる名前を使っているため、これらを対応列として指定します。

4. [主テーブルの順序を保存]の選択を解除します。

結合後のテーブルは、「Trial1.jmp」でのデータの順ではなく、対応する列で並べ替えられます。

5. 「対応の指定」で、[対応する列の値で結合]を選びます。

6. 「Trial1」リストから「コーンの種類」「油の量」「一回にポップする量」を選択します。

7. 「Little」リストから「コーンの種類」「油」「一回にポップする量」を選択します。

8. [対応]をクリックします。

2つのデータテーブルを見比べてみると、行数が違うことがわかります。「Trial1.jmp」には8通りの実験条件の組み合わせが揃っていますが、「Little.jmp」には4通りの実験条件の組み合わせしかありません。サラの実験は完了していますが、ジョーの実験はまだ途中です。「Little.jmp」テーブルにはない実験条件の組み合わせも含め、「Trial1.jmp」のすべての行を結合後のテーブルに含めるとします。

9. 両方のテーブルの[一致しない行も含める]チェックボックスをオンにします。

結合後のテーブルには、「コーンの種類」「油の量」「一回にポップする量」を、それぞれ1列ずつ含めます。ただし、「収率」については、「Trial1.jmp」「Little.jmp」のそれぞれの「収率」を表す列を2つ含めます。

10. [テーブル結合のために列を選択]チェックボックスをオンにします。

11. 「Trial1」リストで、すべての列を選択します。

12. [選択]をクリックします。

13. 「Little」リストから「収率」を選択します。

14. [選択]をクリックします。

図6.30 設定後の「結合(Join)」ウィンドウ 

Image shown here

15. [OK]をクリックします。

図6.31 「Trial1.jmp」と「Little.jmp」を結合したテーブル 

Image shown here

結合後のテーブルは、対応する列で並べ替えられています。「Little.jmp」テーブルの「収率」列(「Littleの収率」)で、「Trial1.jmp」テーブルと一致する値のないセルは欠測値になっています。

テーブルをそのテーブル自体に結合するには(重複行の削除)

1. [ヘルプ]>[サンプルデータライブラリ]を選択し、「Coffee Shop Purchases.jmp」を開きます。

一部の顧客が同じ日に同じ飲料を購入した記録があります。これらの重複行を[結合(Join)]を使って削除します。

2. [テーブル]>[結合(Join)]を選びます。

3. 「'Coffee Shop Purchases'と結合するテーブル」ボックスで、「Coffee Shop Purchases」を選択します。

4. 「対応の指定」で、[対応する列の値で結合]を選びます。

5. 両方の「Coffee Shop Purchases」リストで、すべての列(「日付」「顧客」「飲料」)を選択します。

6. [対応]をクリックします。

7. 両方のテーブル(「主テーブル」と「結合するテーブル」)の「重複する行を削除」のチェックボックスをオンにします。

8. 「出力テーブル名」「Coffee Shop Purchases Final」と入力します。

9. [OK]をクリックします。

図6.32 結合前と結合後の「Coffee Shop Purchases」データテーブル 

Image shown here

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).