ドキュメンテーション

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

outerjoin

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

構文

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

説明

C = outerjoin(A,B) は、キー変数と同じ名前のすべての変数を使用して行を一致させることにより、AB の間の外部連結として table または timetable C を作成します。外部連結は table と timetable の特定の組み合わせでしか実行できません。

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

  • A が timetable の場合、B は table と timetable のいずれかにできます。outerjoin はいずれかの入力の組み合わせに対して timetable として C を返します。

外部連結には、キー変数を基準として、AB の間で一致する行と、A または B のどちらかのみに存在する行が含まれています。C には、キー変数を含む AB 両方からのすべての変数が含まれます。

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

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

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

すべて折りたたむ

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

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

    Amy       5      'cheerios' 
    Bobby    12      'pizza'    
    Holly    23      'salmon'   
    Harry     2      'oreos'    
    Marty    15      'lobster'  
    Sally     6      'pizza'    

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

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

     'cheerios'       110            'A-'     
     'oreos'          160            'D'      
     'pizza'          140            'B'      
     'salmon'         367            'B'      
     'cake'           243            'C-'     

関数 outerjoin を使用して、テーブル A および B のデータを含む新規テーブル C を作成します。

C = outerjoin(A,B)
C=7×5 table
    Age    FavoriteFood_A    FavoriteFood_B    Calories    NutritionGrade
    ___    ______________    ______________    ________    ______________

    NaN      ''                'cake'            243            'C-'     
      5      'cheerios'        'cheerios'        110            'A-'     
     15      'lobster'         ''                NaN            ''       
      2      'oreos'           'oreos'           160            'D'      
     12      'pizza'           'pizza'           140            'B'      
      6      'pizza'           'pizza'           140            'B'      
     23      'salmon'          'salmon'          367            'B'      

テーブル C には、A のキー変数 FavoriteFood_AB のキー変数 FavoriteFood_B に対応する別々の変数が含まれています。

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

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

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

変数 Key1 にテーブル A と共通する値をもつテーブル B を作成します。ただし、テーブル B には、A には存在しない Key1 の値を含む行もあります。

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

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

関数 outerjoin を使用して、テーブル A および B のデータを含む新規テーブル C を作成します。出力テーブル C の 1 つの変数にキー値をマージします。

C = outerjoin(A,B,'MergeKeys',true)
C=6×3 table
    Key1    Var1    Var2
    ____    ____    ____

    'a'       1       4 
    'b'       2       5 
    'c'       3     NaN 
    'd'     NaN       6 
    'e'      11       7 
    'h'      17     NaN 

A から取得したテーブル C の変数では、B と一致しない行に null 値が含まれます。同様に、B から取得した C の変数では、A と一致しなかった行に null 値が含まれます。

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

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

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

変数 Key1 にテーブル A と共通する値をもつテーブル B を作成します。ただし、テーブル B には、A には存在しない Key1 の値を含む行もあります。

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

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

関数 outerjoin を使用して、テーブル A および B のデータを含む新規テーブル C を作成します。キー変数 Key1 に共通の値がある行を一致させますが、キー値が一致しない行も保持します。

また、インデックス ベクトル ia および ib が返されます。これらのベクトルは、C の行と A および B の行の間の対応をそれぞれ示します。

[C,ia,ib] = outerjoin(A,B)
C=6×4 table
    Key1_A    Var1    Key1_B    Var2
    ______    ____    ______    ____

     'a'        1      'a'        4 
     'b'        2      'b'        5 
     'c'        3      ''       NaN 
     ''       NaN      'd'        6 
     'e'       11      'e'        7 
     'h'       17      ''       NaN 

ia = 6×1

     1
     2
     3
     0
     4
     5

ib = 6×1

     1
     2
     0
     3
     4
     0

インデックス ベクトル ia および ib には、それぞれテーブル A または B の行に対応しないテーブル C の行を示すゼロが含まれます。

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

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

変数 Key1 にテーブル A と共通する値をもつテーブル B を作成します。ただし、テーブル B には、A には存在しない Key1 の値を含む行もあります。

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

関数 outerjoin を使用して、テーブル A および B のデータを含む新規テーブル C を作成します。キー値が A の行と一致しない B の行を無視します。

また、インデックス ベクトル ia および ib が返されます。これらのベクトルは、C の行と A および B の行の間の対応をそれぞれ示します。

[C,ia,ib] = outerjoin(A,B,'Type','left')
C=5×4 table
    Key1_A    Var1    Key1_B    Var2
    ______    ____    ______    ____
     'a'        1      'a'        4 
     'b'        2      'b'        5 
     'c'        3      ''       NaN 
     'e'       11      'e'        7 
     'h'       17      ''       NaN 
ia = 5×1

     1
     2
     3
     4
     5

ib = 5×1

     1
     2
     0
     4
     0

ia のすべての値は非ゼロであり、C のすべての行に A に対応する行があることを示しています。

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

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

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

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

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

外部連結で AB を組み合わせます。C は共通の行時間をもつ行を一致させますが、一致のない行も含みます。

C = outerjoin(A,B)
C=5×2 timetable
    Time     Var1_A    Var1_B
    _____    ______    ______

    1 sec       1       NaN  
    2 sec       2         4  
    4 sec       3         5  
    6 sec      11         6  
    7 sec     NaN         7  

AB を組み合わせ、A のいずれの行時間にも一致しない行時間をもつ B の行は無視します。

D = outerjoin(A,B,'Type','left')
D=4×2 timetable
    Time     Var1_A    Var1_B
    _____    ______    ______

    1 sec       1       NaN  
    2 sec       2         4  
    4 sec       3         5  
    6 sec      11         6  

入力引数

すべて折りたたむ

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

名前と値のペアの引数

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

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

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

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

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

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

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

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

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

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

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

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

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

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

キーのマージ フラグ。'MergeKeys'falsetrue0 または 1 で構成されるコンマ区切りのペアとして指定します。

false

outerjoin は、テーブル A および B からの各キー変数ペアに対して別々の 2 つの変数を出力テーブル C に含めます。

これは既定の動作です。

true

outerjoin は、テーブル A および B からの各キー変数ペアに対して 1 つの変数を出力テーブル C に含めます。

outerjoinA および B からキー値をマージすることで 1 つの変数を作成します。A に対応する行が存在する場合は A から、そうでない場合は B から値を取ります。

  • 'LeftVariables' または 'RightVariables' を指定してキー変数ペアから 1 つのキーのみを含める場合、outerjoin はマージしたキー (両方のキー変数の値を含む) を出力テーブルに含めます。

  • 'LeftVariables' および 'RightVariables' を指定して、キー変数ペアからキーを両方とも除外した場合、outerjoin はマージしたキー変数を出力テーブルに含めません。

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

'LeftVariables' を使用すると、キー変数と出力 C の非キー変数を含めたり除外したりできます。

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

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

'RightVariables' を使用すると、キー変数と出力 C の非キー変数を含めたり除外したりできます。

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

外部連結操作のタイプ。'Type''full''left' または 'right' で構成されるコンマ区切りのペアとして指定します。

  • 左外部連結の場合、C には B のどの値とも一致しない A のキー値に対応する行が含まれますが、逆は含まれません。

  • 右外部連結の場合、C には A のどの値とも一致しない B のキー値に対応する行が含まれますが、逆は含まれません。

既定では、outerjoin は完全な外部連結を行い、AB の両方からの一致しない行を含みます。

出力引数

すべて折りたたむ

A および B からの外部連結。テーブルとして返されます。出力テーブル C には、キー値の同じ組み合わせを共有するテーブル A および B の行のペアごとに 1 つの行が格納されます。AB に同じ名前の変数がある場合、outerjoinC の対応する変数名に一意の接尾辞を追加します。A から取得した C の変数では、B と一致しなかった行に null 値が含まれます。同様に、B から取得した C の変数では、A と一致しなかった行に null 値が含まれます。

一般に、キー変数の値の組み合わせがすべて同じ行がテーブル Am 行、テーブル Bn 行存在する場合、テーブル C にはその組み合わせの行が m*n 行格納されます。C にはまた、各入力テーブルのキー値の組み合わせのうち、もう一方の入力テーブルの行と一致しないものに対応する行も格納されます。

C は、キー変数の値で並べ替えられた A(ia,LeftVars)B(ib,RightVars) の水平連結を格納します。既定の設定では、LeftVarsA のすべての変数で構成され、RightVarsB のすべての変数で構成されます。そうでない場合、LeftVars は名前と値のペアの引数 'LeftVariables' で指定された変数で構成され、RightVars は名前と値のペアの引数 'RightVariables' で指定された変数で構成されます。

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

A のインデックス。列ベクトルとして返されます。ia の各要素は、出力テーブル C の行に対応するテーブル A の行を示します。ベクトル ia には、A の行に対応しない C の行を示すゼロが含まれます。

B のインデックス。列ベクトルとして返されます。ib の各要素は、出力テーブル C の行に対応するテーブル B の行を示します。ベクトル ib には、B の行に対応しない C の行を示すゼロが含まれます。

詳細

すべて折りたたむ

キー変数

入力テーブル A および B 間のデータの照合と組み合わせに使用される変数。

ヒント

入力 table A および B の行ラベルは、単独のキーまたは他のキー変数と組み合わせたキーにすることができます。行ラベルは、table の行名または timetable の行時間です。一般的に、outerjoin は行ラベルを入力 table A から出力 table C にコピーします。

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

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

    • AB の両方からの行ラベルをキーの組として指定した場合、outerjoin は必要に応じて B からの行ラベルを C からの行ラベルにマージします。

    • A の行ラベルをキーとして指定し、B の行ラベルをマッチング キーとして指定しなかった場合、outerjoin は必要に応じて C に既定の行ラベルを作成します。

    • AB の両方が table で、どちらの入力 table の行名もキーとして指定しなかった場合、outerjoinC に行名を作成しません。

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

参考

|

R2013b で導入