Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

join

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

説明

T = join(Tleft,Tright) は 2 つの入力の行をマージすることで table または timetable の Tleft および Tright を連結します。関数 join は、Tleft の各行が Tright のちょうど 1 行に一致しなければならないシンプルな形式の連結操作を実行します。キー変数内の対応する値が同じである行が一致します。出力では、キー変数の値が一致している Tleft のすべての行を Tright の行に連結します。

たとえば、TleftKey1Var1 という名前の変数があり、Tright に変数 Key1Var2 がある場合、T=join(Tleft,Tright)Key1 をキー変数として使用します。

The output T has variables Key1, Var1, and Var2, and combines all rows from Tleft with the rows from Tright where Key1 has matching values in Tleft.

既定では、キー変数は次のとおりです。

  • 両方の入力が table であるか、Tleft が timetable で Tright が table の場合は、TleftTright 内の同じ名前の変数。

  • TleftTright がともに timetable である場合は、行時間のベクトル。

一致しているキー変数の値の順序は、左右の入力で同じである必要はありません。また、Tright のキー変数は、Tleft のキー変数のすべての値を含まなければなりません。各値は、Tright のキー変数に 1 回のみ出現しなければなりませんが、Tleft のキー変数には複数回出現してもかまいません。したがって、連結操作は、Tleft の複数の行に一致している Tright の行を複製します。

入力は、両方とも table、両方とも timetable、または table と timetable それぞれ 1 つずつにできます。

  • Tleft が table の場合、joinT を table として返します。

  • Tleft が timetable の場合、joinT を timetable として返します。

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

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

[T,iright] = join(___) は、iright の各要素が T の行に対応する Tright の行を示すインデックス ベクトル iright も返します。この構文では、前述の構文の入力引数のいずれかを使用できます。

すべて折りたたむ

table Tleft を作成します。

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

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

Tleft と 1 つの変数を共有する table Tright を作成します。

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

        1         {'Mary'}
        2         {'Mona'}

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

T = join(Tleft,Tright)
T=5×3 table
     Employee     Department    Manager 
    __________    __________    ________

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

table Tleft を作成します。

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

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

Tleft と 1 つの変数を共有する table Tright を作成します。

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

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

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

T = join(Tleft,Tright)
T=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 T には、'cake' に関する table Tright の最後の行の情報が含まれていません。これは、table Tleft に対応するエントリが存在しないためです。

table Tleft を作成します。

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

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

table TrightVar2 に table TleftVar2 と同じ内容を指定して、table Tright を作成します。

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

     6       5  
     1       4  
     1       9  
     6       6  
     8       1  

table Tleft と table Tright のデータを含む、新規 table T を作成します。table Tleft および table TrightVar2 を関数 join のキー変数として使用します。

T = join(Tleft,Tright,'Keys','Var2')
T=5×4 table
    Var1_Tleft    Var2    Var3    Var1_Tright
    __________    ____    ____    ___________

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

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

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

table Tleft を作成します。

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

     10      5  
      4      4  
      2      9  
      3      6  
      7      1  

table TrightVar2 に table TleftVar2 と同じ内容を指定して、table Tright を作成します。

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

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

table Tleft および table Tright のデータを含む新規 table T を作成します。Var2 を関数 join のキー変数として使用し、table TleftVar1 のコピーだけを維持します。出力 table T に、table TrightVar1 データは含まれません。

T = join(Tleft,Tright,'Keys','Var2','KeepOneCopy','Var1')
T=5×3 table
    Var1    Var2    Var3
    ____    ____    ____

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

table Tleft を作成します。

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

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

Tleft の行と Tright の行が 1 対 1 で対応するように、table Tright を作成します。

Tright = 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'})
Tright=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 Tleft および table Tright のデータを含む新規 table T を作成します。行名のベクトルをキー変数として使用します (Tleft.Properties.DimensionNames{1} で示されるように、table の行名のベクトルの名前は 'Row' です)。

T = join(Tleft,Tright,'Keys','Row')
T=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  

T の行は Tleft と同じ順序になります。

table Tleft を作成します。

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

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

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

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

     6        2 
     1        3 
     1        4 
     6        7 
     8       10 

table Tleft と table Tright のデータを含む、新規 table T を作成します。テーブル TleftVar1 とテーブル TrightVar2 を、関数 join のキー変数として使用します。

[T,iright] = join(Tleft,Tright,'LeftKeys',1,'RightKeys',2)
T=5×4 table
    Var1_Tleft    Var2    Var3    Var1_Tright
    __________    ____    ____    ___________

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

iright = 5×1

     5
     3
     1
     2
     4

T は、TleftTright(iright,1) を水平に連結したものです。

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

Traffic = [0.8 0.9 0.1 0.7 0.9]';
Noise = [0 1 1.5 2 2.3]';
Tleft = timetable(hours(1:5)',Traffic,Noise)
Tleft=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]';
Tright = timetable(hours(1:5)',Distance)
Tright=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 はキー変数として行時間を使用します。

T = join(Tleft,Tright)
T=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'];
Tleft = timetable(seconds(1:10)',Measurements,Device)
Tleft=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];
Tright = table(Device,Accuracy)
Tright=2×2 table
    Device    Accuracy
    ______    ________

      A        0.023  
      B        0.037  

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

T = join(Tleft,Tright)
T=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 または timetable として指定します。すべてのキー変数について、Tleft の各行は、Tright の 1 行に正確に一致しなければなりません。

右のテーブル。table または timetable として指定します。すべてのキー変数について、Tright の各行は、Tleft の 1 行に正確に一致しなければなりません。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

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

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

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

入力 table または timetable からの行ラベルのベクトルは、単独のキーまたは他のキー変数と組み合わせたキーにすることができます。行ラベルは、table の行名または timetable の行時間です。このベクトルをキーとして使用するには、(table の行名に対して) 'Row' として、行時間の timetable ベクトルの名前として、または T.Properties.DimensionNames{1} の値として指定します。ここで T は table または timetable です。

下位互換性のため、TleftTright が行名をもつ table の場合、'Keys' の値を 'RowNames' として指定することもできます。しかし、ベスト プラクティスは 'Keys' の値を行名のベクトルの名前として指定することです。

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

例: 'Keys',{'X','Y'} は、TleftTrightXY という名前の変数をキー変数として使用します。

例: 'Keys','Row' は、TleftTright の両方が行名をもつ table の場合、TleftTright の行名のベクトルをキー変数として使用します。

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

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

入力 table または timetable からの行ラベルのベクトルは、単独のキーまたは他のキー変数と組み合わせたキーにすることができます。行ラベルは、table の行名または timetable の行時間です。このベクトルをキーとして使用するには、(table の行名に対して) 'Row' として、行時間の timetable ベクトルの名前として、または T.Properties.DimensionNames{1} の値として指定します。ここで T は table または timetable です。

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

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

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

入力 table または timetable からの行ラベルのベクトルは、単独のキーまたは他のキー変数と組み合わせたキーにすることができます。行ラベルは、table の行名または timetable の行時間です。このベクトルをキーとして使用するには、(table の行名に対して) 'Row' として、行時間の timetable ベクトルの名前として、または T.Properties.DimensionNames{1} の値として指定します。ここで T は table または timetable です。

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

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

'LeftVariables' を使用すると、T にキー変数および非キー変数を含めたり、除外したりできます。ただし、Tleft の行名または行時間は変数ではないため、含めることはできません。

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

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

'RightVariables' を使用すると、T にキー変数および非キー変数を含めたり、除外したりできます。ただし、Tright の行名または行時間は変数ではないため、含めることはできません。

既定で、join は、キー変数以外の Tright のすべての変数を含めます。

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

キー変数は T に 1 回出現しますが、同じ名前をもつ非キー変数が TleftTright に出現する場合、join は既定で T に両方のコピーを保持します。Tleft からのコピーのみを保持するには、'KeepOneCopy' の名前と値のペアを使用します。

例: 'KeepOneCopy',Var2 は、Tleft からの非キー変数 Var2 のコピーのみを保持します。

出力引数

すべて折りたたむ

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

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

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

Tleft が table の場合、T も table です。Tleft が timetable で Tright が timetable または table のいずれかの場合、T は timetable です。

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

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

詳細

すべて折りたたむ

キー変数

入力テーブル TleftTright の間でデータの一致と組み合わせに使用される変数。

キー値

Tleft または Tright のキー変数の値。

アルゴリズム

関数 join は最初に 1 つ以上のキー変数を検索します。次に、join はそのキー変数を使用して、入力テーブル Tleft の各行に一致する入力テーブル Tright の行を検索し、これらの行を結合して、出力テーブル T の行を作成します。

  • TleftTright のキー値が 1 対 1 でマッピングされている場合、joinTright のデータを並べ替えて、テーブル Tleft に追加します。

  • TleftTright のキー値が多対 1 でマッピングされている場合、joinTright のデータの並べ替えと反復を行ってから、テーブル Tleft に追加します。

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

拡張機能

バージョン履歴

R2013b で導入