Main Content

innerjoin

2 つの table または timetable 間の内部連結

説明

T = innerjoin(Tleft,Tright)キー変数を使用して、TleftTright の "内部連結" として table または timetable T を作成します。内部連結は、キー変数の値が一致する行を連結します。たとえば、TleftKey1Var1 という名前の変数があり、Tright に変数 Key1Var2 がある場合、T=innerjoin(Tleft,Tright)Key1 をキー変数として使用します。

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

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

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

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

一致しているキー変数の値の順序は、左右のテーブルで同じである必要はありません。内部連結は、2 つのテーブルの変数の間で 1 対多と多対 1 の照合を実行できます。つまり、左のテーブルのキー変数に 1 回出現する値について、一致する値が右のテーブルに複数存在できます。同様に、右のテーブルのキー変数に 1 回出現する値について、一致する値が左のテーブルの複数存在できます。

内部連結は table と timetable の特定の組み合わせでのみ実行できます。

  • Tleft が table の場合、Tright は table でなければなりません。innerjoinT を table として返します。

  • Tleft が timetable の場合、Tright は table と timetable のいずれかにできます。innerjoin はいずれかの入力の組み合わせに対して timetable として T を返します。

T = innerjoin(Tleft,Tright,Name,Value) は、1 つ以上の Name,Value のペアの引数で指定された追加オプションを使用して内部連結操作を実行します。

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

[T,ileft,iright] = innerjoin(___) は、インデックス ベクトル ileft および iright も返します。これらのベクトルは、T の行と Tleft および Tright の行との対応をそれぞれ示します。この構文では、前述の構文の入力引数のいずれかを使用できます。

すべて折りたたむ

table Tleft を作成します。

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

     5     {'cereal' } 
    12     {'pizza'  } 
    23     {'salmon' } 
     2     {'cookies'} 
     6     {'pizza'  } 

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

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

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

関数 innerjoin を使用して、テーブル Tleft および Tright のデータを含む新規テーブル T を作成します。

T = innerjoin(Tleft,Tright)
T=5×4 table
    Age    FavoriteFood    Calories    NutritionGrade
    ___    ____________    ________    ______________

     5     {'cereal' }       110           {'A-'}    
     2     {'cookies'}       160           {'D' }    
    12     {'pizza'  }       140           {'B' }    
     6     {'pizza'  }       140           {'B' }    
    23     {'salmon' }       367           {'B' }    

table T はキー変数 FavoriteFood で並べ替えられます。

table Tleft を作成します。

Tleft = table({'a' 'b' 'c' 'e' 'h'}',[1 2 3 11 17]',...
        'VariableNames',{'Key1' 'Var1'})
Tleft=5×2 table
    Key1     Var1
    _____    ____

    {'a'}      1 
    {'b'}      2 
    {'c'}      3 
    {'e'}     11 
    {'h'}     17 

変数 Key1 に table Tleft と共通する値をもつ table Tright を作成します。ただし、table Tright には、Tleft には存在しない Key1 の値を含む行もあります。

Tright = table({'a' 'b' 'd' 'e'}',[4 5 6 7]',...
         'VariableNames',{'Key1' 'Var2'})
Tright=4×2 table
    Key1     Var2
    _____    ____

    {'a'}     4  
    {'b'}     5  
    {'d'}     6  
    {'e'}     7  

関数 innerjoin を使用して、テーブル Tleft および Tright のデータを含む新規テーブル T を作成します。変数 Key1 の値が一致する行のみが保持されます。

また、インデックス ベクトル ileft および iright が返されます。これらのベクトルは、T の行と Tleft および Tright の行の間の対応をそれぞれ示します。

[T,ileft,iright] = innerjoin(Tleft,Tright)
T=3×3 table
    Key1     Var1    Var2
    _____    ____    ____

    {'a'}      1      4  
    {'b'}      2      5  
    {'e'}     11      7  

ileft = 3×1

     1
     2
     4

iright = 3×1

     1
     2
     4

table T は、キー変数 Key1 の値で並べ替えられ、Tleft(ileft,:)Tright(iright,'Var2') の水平連結を格納します。

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 

2 番目の変数に table Tleft の最初の変数と共通する値をもつ table Tright を作成します。

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

     6       2  
     1       3  
     1       4  
     6       5  
     8       6  

関数 innerjoin を使用して、テーブル Tleft および Tright のデータを含む新規テーブル T を作成します。Tleft の最初の変数と Tright の 2 番目の変数をキー変数として使用します。

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

        2          9       8           6     
        3          6       8           1     
        4          4       3           1     

ileft = 3×1

     3
     4
     2

iright = 3×1

     1
     2
     3

table T では、キー変数に関して TleftTright の間で一致する行のみが保持されます。

table T には、Tleft(ileft,:)Tright(iright,'Var1') の水平連結が格納されます。

2 つの timetable、TleftTright を作成します。これらには共通する行時間がいくつかありますが、各 timetable には他方の timetable にはない行時間も含まれています。

Tleft = timetable(seconds([1;2;4;6]),[1 2 3 11]')
Tleft=4×1 timetable
    Time     Var1
    _____    ____

    1 sec      1 
    2 sec      2 
    4 sec      3 
    6 sec     11 

Tright = timetable(seconds([2;4;6;7]),[4 5 6 7]')
Tright=4×1 timetable
    Time     Var1
    _____    ____

    2 sec     4  
    4 sec     5  
    6 sec     6  
    7 sec     7  

TleftTright を内部連結で結合します。T は共通の行時間の行と一致します。T はこれ以外にいずれの timetable からの行も含んでいません。

T = innerjoin(Tleft,Tright)
T=3×2 timetable
    Time     Var1_Tleft    Var1_Tright
    _____    __________    ___________

    2 sec         2             4     
    4 sec         3             5     
    6 sec        11             6     

入力引数

すべて折りたたむ

左のテーブル。table または timetable として指定します。

右のテーブル。table または timetable として指定します。

名前と値の引数

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

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

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

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

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

行ラベルのベクトルは、単独のキーまたは他のキー変数と組み合わせたキーにすることができます。詳細については、アルゴリズムの節を参照してください。

例: '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' では、同じ数のキー変数を指定しなければなりません。innerjoin は、キーの値をその順序に基づいて組み合わせます。

行ラベルのベクトルは、単独のキーまたは他のキー変数と組み合わせたキーにすることができます。詳細については、アルゴリズムの節を参照してください。

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

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

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

行ラベルのベクトルは、単独のキーまたは他のキー変数と組み合わせたキーにすることができます。詳細については、アルゴリズムの節を参照してください。

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

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

'LeftVariables' を使用して、出力 T にキー変数および非キー変数を含めたり、除外したりできます。

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

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

'RightVariables' を使用して、出力 T にキー変数および非キー変数を含めたり、除外したりできます。

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

出力引数

すべて折りたたむ

Tleft および Tright からの内部連結。table または timetable として返されます。出力 table または出力 timetable である T には、キー変数で同じ値の組み合わせを共有する Tleft および Tright の行のペアごとに 1 行が格納されます。TleftTright に同じ名前の変数がある場合、innerjoinT の対応する変数名に一意の接尾辞を追加します。

一般に、Tleftm 行、Trightn 行で、キー変数の値の組み合わせがすべて同じであれば、T にはその組み合わせについて m*n 行が含まれます。

T は、キー変数の値で並べ替えられ、Tleft(ileft,LeftVars)Tright(iright,RightVars) の水平連結を格納します。既定で、LeftVarsTleft のすべての変数で構成され、RightVarsTright のすべての非キー変数で構成されます。そうでない場合、LefttVars は名前と値のペアの引数 'LeftVariables' で指定された変数で構成され、RightVars は名前と値のペアの引数 'RightVariables' で指定された変数で構成されます。

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

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

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

詳細

すべて折りたたむ

キー変数

入力テーブル Tleft および Tright 間のデータの照合と結合に使用される変数。

アルゴリズム

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

    一般的に、innerjoin は、入力テーブル Tleft から出力テーブル T に行ラベルをコピーします。

    • Tleft に行ラベルがない場合、T に行ラベルはありません。

    • Tleft に行ラベルがある場合、innerjoinTleft から行ラベルをコピーして T に行ラベルを作成します。

      • ただし、TleftTright の両方が table であるが、いずれの入力の行名もキーとして指定しなかった場合、innerjoinT に行名を作成しません。

      • TleftTright の両方が timetable であるが、どちらの入力の行時間もキーとして指定しなかった場合、innerjoinTleft から T に行時間をコピーします。

    Tleft の行ラベルを左キー、Tright の変数を右キーとして使用して、内部連結を実行することはできません。内部連結を実行するには、Tleft の行ラベルを table 変数に変換し、この新しい table 変数をキーとして使用します。

拡張機能

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2013b で導入

参考

関数

ライブ エディター タスク