公開日: 09/19/2023

データテーブルの結合例

次の節では、JMPの[結合(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.21 行番号によるテーブルの結合 

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

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

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

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

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

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

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

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

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

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

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

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

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

元のテーブルの列をすべて結合後のテーブルに含める必要がない場合もあります。

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

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

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

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

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

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

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

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

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

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

指定した列だけを結合

直積結合の例

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

直積結合の単純な例

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

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

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

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

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

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

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

「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.25 結合後の「Oil Amount+Batch」テーブル 

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

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

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

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

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

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

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

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

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

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

対応する列でデータテーブルを結合する場合、JMPはそれらの列の値を照合することによって2つのテーブルの行を揃えます。

注意: これらの列に一意でない値が含まれている場合は、注意して操作を進めてください。

メモ:

対応する列のデータタイプ(数値、文字、または行の属性)は同じでなければなりません。

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

新しいデータテーブルを作成する代わりに、仮想結合を使用するという方法もあります。データテーブルの仮想結合を参照してください。

一意のIDを含むテーブルを結合するには

ホットドッグに関する情報を含む2つのファイルがあります。2つ目のファイルには「サイズ」という列がありますが、1つ目のファイルにはその列はありません。対応する列の値によって、これらのデータテーブルを結合してみましょう。

1. [ヘルプ]>[サンプルデータフォルダ]を選択し、「Hot Dogs.jmp」「Hot Dogs2.jmp」を開きます。

「製品名」は、データテーブル内の各行で一意の値を持っています。2つのテーブルには、それぞれ54個の製品名があります。

2. 「Hot Dogs」データテーブルで、[テーブル]>[結合(Join)]を選択します。

3. 「‘Hot Dogs’と結合するテーブル」リストで、「Hot Dogs2」を選択します。

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

5. 「Hot Dogs」リストと「Hot Dogs2」リストで、それぞれ「製品名」を選択します。

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

7. 「オプション」枠内の[同名の列をマージ]チェックボックスをオンにします。[同名の列をマージ]チェックボックスをオンにすると、[対応フラグ]チェックボックスも自動的にオンになります。

8. ウィンドウの左下隅にある[ダイアログを開いたままにする]チェックボックスをオンにします。これで、期待通りの結果が得られなかったときに、「結合(Join)」ウィンドウに戻りやすくなります。

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

図6.27 対応する列の値で結合したテーブル 

対応する列の値で結合したテーブル

出来上がったテーブルには、「Hot Dogs2」テーブルにあった「サイズ」列が含まれています。「対応フラグ」列を見ると、どの行のデータも、両方のテーブルにあったことがわかります。

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

サラとジョーは、それぞれポップコーンの実験に取り組んでいます。異なる種類のコーン(グルメとプレーン)を油の量を変えてポップし、でき上がったポップコーンの量(収率)を記録しています。サラは、実験データを「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.28 設定後の「結合(Join)」ウィンドウ 

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

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

結合後のテーブルは、対応する列で並べ替えられています。「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.29 結合前と結合後の「Coffee Shop Purchases」データテーブル 

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

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