ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

join

キー変数を使用した 2 つの table または timetable の組み合わせ

構文

C = join(A,B)
C = join(A,B,Name,Value)
[C,ib] = join(___)

説明

C = join(A,B) は、キー変数と同じ名前をもつすべての変数を使って行を一致させることで、table または timetable の AB をマージします。キー値AB の両方に共通でなければなりませんが、出現順序が異なっていてもかまいません。AB は両方を table または timetable にすることも、片方を table または timetable にすることもできます。

  • A が table の場合、joinC を table として返します。

  • A が timetable の場合、joinC を timetable として返します。

joinA からのすべての変数を保持し、B の非キー変数から対応する内容を追加します。

AB の行ラベルはキー変数にできます。行ラベルは、table の行名または timetable の行時間です。

C = join(A,B,Name,Value) は、1 つ以上の Name,Value のペア引数で指定された追加オプションを使用して、table または timetable を結合します。

たとえば、キー変数としてどの変数を使用するかを指定できます。

[C,ib] = join(___) は、ib の各要素が C の該当する行に対応する B 内の行を識別するように、インデックス ベクトル ib も返します。この構文では、前述の構文の入力引数のいずれかを使用できます。

すべて折りたたむ

テーブル A を作成します。

A = table({'Janice','Jonas','Javier','Jerry','Julie'}',[1;2;1;2;1],...
    'VariableNames',{'Employee' 'Department'})
A=5×2 table
    Employee    Department
    ________    __________

    'Janice'        1     
    'Jonas'         2     
    'Javier'        1     
    'Jerry'         2     
    'Julie'         1     

A と共通の変数を 1 つもつ table B を作成します。

B = table([1 2]',{'Mary' 'Mona'}',...
    'VariableNames',{'Department' 'Manager'})
B=2×2 table
    Department    Manager
    __________    _______

        1         'Mary' 
        2         'Mona' 

table A と table B のデータを含む、新規 table C を作成します。関数 join を使用して、table BManager のデータを反復して、キー変数 Department に基づいて table A のデータに追加します。

C = join(A,B)
C=5×3 table
    Employee    Department    Manager
    ________    __________    _______

    'Janice'        1         'Mary' 
    'Jonas'         2         'Mona' 
    'Javier'        1         'Mary' 
    'Jerry'         2         'Mona' 
    'Julie'         1         'Mary' 

テーブル A を作成します。

A = table([5;12;23;2;6],...
    {'cereal';'pizza';'salmon';'cookies';'pizza'},...
    'VariableNames',{'Age','FavoriteFood'},...
    'RowNames',{'Amy','Bobby','Holly','Harry','Sally'})
A=5×2 table
             Age    FavoriteFood
             ___    ____________

    Amy       5      'cereal'   
    Bobby    12      'pizza'    
    Holly    23      'salmon'   
    Harry     2      'cookies'  
    Sally     6      'pizza'    

A と 1 つの変数を共有するテーブル B を作成します。

B = table({'cereal';'cookies';'pizza';'salmon';'cake'},...
    [110;160;140;367;243],...
    {'B';'D';'B-';'A';'C-'},...
    'VariableNames',{'FavoriteFood','Calories','NutritionGrade'})
B=5×3 table
    FavoriteFood    Calories    NutritionGrade
    ____________    ________    ______________

     'cereal'         110            'B'      
     'cookies'        160            'D'      
     'pizza'          140            'B-'     
     'salmon'         367            'A'      
     'cake'           243            'C-'     

table A および table B のデータを含む新規 table C を作成します。共通の変数 FavoriteFood がキー変数として関数 join によって使用されます。

C = join(A,B)
C=5×4 table
             Age    FavoriteFood    Calories    NutritionGrade
             ___    ____________    ________    ______________

    Amy       5      'cereal'         110            'B'      
    Bobby    12      'pizza'          140            'B-'     
    Holly    23      'salmon'         367            'A'      
    Harry     2      'cookies'        160            'D'      
    Sally     6      'pizza'          140            'B-'     

table C には、'cake' に関する table B の最後の行の情報が含まれていません。これは、table A に対応するエントリが存在しないためです。

テーブル A を作成します。

A = table([10;4;2;3;7],[5;4;9;6;1],[10;3;8;8;4])
A=5×3 table
    Var1    Var2    Var3
    ____    ____    ____

     10      5       10 
      4      4        3 
      2      9        8 
      3      6        8 
      7      1        4 

table BVar2 に table AVar2 と同じ内容を指定して、table B を作成します。

B = table([6;1;1;6;8],[5;4;9;6;1])
B=5×2 table
    Var1    Var2
    ____    ____

     6       5  
     1       4  
     1       9  
     6       6  
     8       1  

table A と table B のデータを含む、新規 table C を作成します。table A および table BVar2 を関数 join のキー変数として使用します。

C = join(A,B,'Keys','Var2')
C=5×4 table
    Var1_A    Var2    Var3    Var1_B
    ______    ____    ____    ______

      10       5       10       6   
       4       4        3       1   
       2       9        8       1   
       3       6        8       6   
       7       1        4       8   

join は、非キー変数 Var1 に一意の接尾辞を追加して、table A と table B のデータを識別します。

table A および table B のデータを含む新規 table を作成します。両方の table で非キー変数の名前が同じ場合、table A のコピーだけを維持します。

テーブル A を作成します。

A = table([10;4;2;3;7],[5;4;9;6;1])
A=5×2 table
    Var1    Var2
    ____    ____

     10      5  
      4      4  
      2      9  
      3      6  
      7      1  

table BVar2 に table AVar2 と同じ内容を指定して、table B を作成します。

B = table([6;1;1;6;8],[5;4;9;6;1],[10;3;8;8;4])
B=5×3 table
    Var1    Var2    Var3
    ____    ____    ____

     6       5       10 
     1       4        3 
     1       9        8 
     6       6        8 
     8       1        4 

table A および table B のデータを含む新規 table C を作成します。Var2 を関数 join に対するキー変数として使用し、table AVar1 のコピーだけを維持します。出力 table C には、table BVar1 データは含まれません。

C = join(A,B,'Keys','Var2','KeepOneCopy','Var1')
C=5×3 table
    Var1    Var2    Var3
    ____    ____    ____

     10      5       10 
      4      4        3 
      2      9        8 
      3      6        8 
      7      1        4 

テーブル A を作成します。

A = table(['M';'M';'F';'F';'F'],[38;43;38;40;49],...
    'VariableNames',{'Gender' 'Age'},...
    'RowNames',{'Smith' 'Johnson' 'Williams' 'Jones' 'Brown'})
A=5×2 table
                Gender    Age
                ______    ___

    Smith         M       38 
    Johnson       M       43 
    Williams      F       38 
    Jones         F       40 
    Brown         F       49 

A の行と B の行の間の対応が 1 対 1 となるように、table B を作成します。

B = table([64;69;67;71;64],...
    [119;163;133;176;131],...
    [122 80; 109 77; 117 75; 124 93; 125 83],...
    'VariableNames',{'Height' 'Weight' 'BloodPressure'},...
    'RowNames',{'Brown' 'Johnson' 'Jones' 'Smith' 'Williams'})
B=5×3 table
                Height    Weight    BloodPressure
                ______    ______    _____________

    Brown         64       119       122     80  
    Johnson       69       163       109     77  
    Jones         67       133       117     75  
    Smith         71       176       124     93  
    Williams      64       131       125     83  

table A および table B のデータを含む新規 table C を作成します。行の名前を関数 join に対するキーとして使用します。

C = join(A,B,'Keys','RowNames')
C=5×5 table
                Gender    Age    Height    Weight    BloodPressure
                ______    ___    ______    ______    _____________

    Smith         M       38       71       176       124     93  
    Johnson       M       43       69       163       109     77  
    Williams      F       38       64       131       125     83  
    Jones         F       40       67       133       117     75  
    Brown         F       49       64       119       122     80  

C の行は A と同じ順序になります。

テーブル A を作成します。

A = table([10;4;2;3;7],[5;4;9;6;1],[10;3;8;8;4])
A=5×3 table
    Var1    Var2    Var3
    ____    ____    ____

     10      5       10 
      4      4        3 
      2      9        8 
      3      6        8 
      7      1        4 

table BVar2 に table AVar1 と同じ内容を異なる順序で指定して、table B を作成します。

B = table([6;1;1;6;8],[2;3;4;7;10])
B=5×2 table
    Var1    Var2
    ____    ____

     6        2 
     1        3 
     1        4 
     6        7 
     8       10 

table A と table B のデータを含む、新規 table C を作成します。table AVar1 と table BVar2 を、関数 join に対するキー変数として使用します。

[C,ib] = join(A,B,'LeftKeys',1,'RightKeys',2)
C=5×4 table
    Var1_A    Var2    Var3    Var1_B
    ______    ____    ____    ______

      10       5       10       8   
       4       4        3       1   
       2       9        8       6   
       3       6        8       1   
       7       1        4       6   

ib = 5×1

     5
     3
     1
     2
     4

C は、AB(ib,2) を水平に連結したものです。

同じ行時間と異なる変数をもつ 2 つの timetable を作成します。

Traffic = [0.8 0.9 0.1 0.7 0.9]';
Noise = [0 1 1.5 2 2.3]';
A = timetable(hours(1:5)',Traffic,Noise)
A=5×2 timetable
    Time    Traffic    Noise
    ____    _______    _____

    1 hr      0.8         0 
    2 hr      0.9         1 
    3 hr      0.1       1.5 
    4 hr      0.7         2 
    5 hr      0.9       2.3 

Distance = [0.88 0.86 0.91 0.9 0.86]';
B = timetable(hours(1:5)',Distance)
B=5×1 timetable
    Time    Distance
    ____    ________

    1 hr      0.88  
    2 hr      0.86  
    3 hr      0.91  
    4 hr       0.9  
    5 hr      0.86  

timetable をマージします。join はキー変数として行時間を使用します。

C = join(A,B)
C=5×3 timetable
    Time    Traffic    Noise    Distance
    ____    _______    _____    ________

    1 hr      0.8         0       0.88  
    2 hr      0.9         1       0.86  
    3 hr      0.1       1.5       0.91  
    4 hr      0.7         2        0.9  
    5 hr      0.9       2.3       0.86  

timetable と table を作成します。

Measurements = [0.13 0.22 0.31 0.42 0.53 0.57 0.67 0.81 0.90 1.00]';
Device = ['A';'B';'A';'B';'A';'B';'A';'B';'A';'B'];
A = timetable(seconds(1:10)',Measurements,Device)
A=10×2 timetable
     Time     Measurements    Device
    ______    ____________    ______

    1 sec         0.13          A   
    2 sec         0.22          B   
    3 sec         0.31          A   
    4 sec         0.42          B   
    5 sec         0.53          A   
    6 sec         0.57          B   
    7 sec         0.67          A   
    8 sec         0.81          B   
    9 sec          0.9          A   
    10 sec           1          B   

Device = ['A';'B'];
Accuracy = [0.023;0.037];
B = table(Device,Accuracy)
B=2×2 table
    Device    Accuracy
    ______    ________

      A        0.023  
      B        0.037  

timetable と table をマージします。AB の両方に Device という名前の変数があるため、それがキー変数となります。C は timetable です。

C = join(A,B)
C=10×3 timetable
     Time     Measurements    Device    Accuracy
    ______    ____________    ______    ________

    1 sec         0.13          A        0.023  
    2 sec         0.22          B        0.037  
    3 sec         0.31          A        0.023  
    4 sec         0.42          B        0.037  
    5 sec         0.53          A        0.023  
    6 sec         0.57          B        0.037  
    7 sec         0.67          A        0.023  
    8 sec         0.81          B        0.037  
    9 sec          0.9          A        0.023  
    10 sec           1          B        0.037  

入力引数

すべて折りたたむ

入力 table。両方とも table、両方とも timetable、table と timetable それぞれ 1 つずつのいずれかとして指定します。すべてのキー変数に対して、A の各行は、B の 1 行に正確に一致しなければなりません。

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: 'Keys',2 は、A の 2 番目の変数と B の 2 番目の変数をキー変数として使用します。

キーとして使用する変数。'Keys' と、正の整数、正の整数のベクトル、文字ベクトル、文字ベクトルの cell 配列、string 配列、logical ベクトルまたは 'RowNames' のいずれかで構成される、コンマ区切りのペアとして指定します。

名前と値のペアの引数 'Keys' を名前と値のペアの引数 'LeftKeys' および 'RightKeys' と共に使用することはできません。

行ラベルはキー変数にすることができます。行ラベルは、table の行名または timetable の行時間です。'Keys' は行ラベルのみ、A および B の 1 つ以上の変数、行ラベルと変数の両方のいずれかとして指定できます。

'RowNames' を指定すると、joinA の行名と B の行名をキーとして使用します。この場合、A 内のすべての行にそれぞれ対応する 1 行が B 内になければなりません。A が timetable の場合は 'RowNames' を指定できません。

例: 'Keys',[1 3] は、A および B の最初の変数と 3 番目の変数をキー変数として使用します。

A でキーとして使用する変数。'LeftKeys' と、正の整数、正の整数のベクトル、文字ベクトル、文字ベクトルの cell 配列、string 配列、または logical ベクトルのいずれかで構成される、コンマ区切りのペアとして指定します。

名前と値のペアの引数 'LeftKeys' は名前と値のペアの引数 'RightKeys' と組み合わせて使用しなければなりません。'LeftKeys' および 'RightKeys' では、同じ数のキー変数を指定しなければなりません。join は、AB のキー値をその順序に基づいて組み合わせます。

行ラベルはキー変数にすることができます。行ラベルは、table の行名または timetable の行時間です。'LeftKeys'A の行ラベル、A の 1 つ以上の変数、行ラベルと変数の両方のいずれかとして指定できます。

例: 'LeftKeys',1 は、A の最初の変数のみをキー変数として使用します。

B でキーとして使用する変数。'RightKeys' と、正の整数、正の整数のベクトル、文字ベクトル、文字ベクトルの cell 配列、string 配列、または logical ベクトルのいずれかで構成される、コンマ区切りのペアとして指定します。

名前と値のペアの引数 'RightKeys' は名前と値のペアの引数 'LeftKeys' と組み合わせて使用しなければなりません。'LeftKeys' および 'RightKeys' では、同じ数のキー変数を指定しなければなりません。join は、AB のキー値をその順序に基づいて組み合わせます。

行ラベルはキー変数にすることができます。行ラベルは、table の行名または timetable の行時間です。'RightKeys'B の行ラベル、B の 1 つ以上の変数、行ラベルと変数の両方のいずれかとして指定できます。

例: 'RightKeys',3 は、B の 3 番目の変数のみをキー変数として使用します。

C に含める A の変数。'LeftVariables' と、正の整数、正の整数のベクトル、文字ベクトル、文字ベクトルの cell 配列、string 配列、または logical ベクトルのいずれかで構成される、コンマ区切りのペアとして指定します。

'LeftVariables' を使用すると、キー変数と C の非キー変数を含めたり除外したりできます。ただし、A からの行名や行時間は変数ではないため、含めることはできません。

既定の設定では、join には A のすべての変数が含まれます。

C に含める B の変数。'RightVariables' と、正の整数、正の整数のベクトル、文字ベクトル、文字ベクトルの cell 配列、string 配列、または logical ベクトルのいずれかで構成される、コンマ区切りのペアとして指定します。

'RightVariables' を使用すると、キー変数と C の非キー変数を含めたり除外したりできます。ただし、B からの行名や行時間は変数ではないため、含めることはできません。

既定の設定では、join には、キー変数以外の B のすべての変数が含まれます。

joinA からのコピーだけを保持させる変数。'KeepOneCopy' と、変数名を指定する文字ベクトル、文字ベクトルの cell 配列または string 配列で構成される、コンマ区切りのペアとして指定します。

キー変数は C に一度出現しますが、同じ名前をもつ非キー変数が AB で出現する場合、join は既定で C に両方のコピーを保持します。A からのコピーだけを保持するには、'KeepOneCopy' の名前と値のペアを使用します。

例: 'KeepOneCopy',Var2 は、非キー変数 Var2A のコピーだけを保持します。

出力引数

すべて折りたたむ

A および B からのマージされたデータ。table または timetable として返されます。table C には、A の各行に対応する 1 行が、同じ順序で出現します。

join は、A(:,LeftVars)B(ib,RightVars) を水平方向に連結して C を作成します。既定の設定では、LeftVarsA のすべての変数で、RightVarsB のすべての非キー変数です。そうでない場合、LeftVars は名前と値のペアの引数 'LeftVariables' で指定された変数で構成され、RightVars は名前と値のペアの引数 'RightVariables' で指定された変数で構成されます。

AB に同じ名前の非キー変数が含まれていると、'KeepOneCopy' の名前と値のペアの引数が指定されている場合を除き、joinC の対応する変数名に一意の接尾辞を追加します。

A が table の場合、C も table です。A が timetable で B が timetable または table のいずれかの場合、C は timetable です。

C には、説明、変数単位、変数名、行名などの追加のメタデータを格納できます。詳細については、table または timetable のプロパティの節を参照してください。

B のインデックス。列ベクトルとして返されます。ib の各要素は、出力 table または出力 timetable である C の行に対応する B の行を示します。

詳細

すべて折りたたむ

キー変数

入力 table A および B 間のデータの一致と組み合わせに使用される変数。

キー値

A のキー変数のエントリ。

アルゴリズム

関数 join は最初に 1 つまたは複数のキー変数を検索します。次に、join はそのキー変数を使って、入力 table A の各行に一致する入力 table B の行を検索し、これらの行を結合して、出力 table C の行を作成します。

  • AB のキー値のマッピングが 1 対 1 に対応している場合、joinB のデータを並べ替え、table A に追加します。

  • AB のキー値のマッピングが多対 1 に対応している場合、joinB のデータの並べ替えと反復を行ってから、table A に追加します。

  • A のキー値にマッピングされないキー変数のデータが B 内に存在する場合、join は出力 table C にそのデータを含めません。

拡張機能

R2013b で導入