이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

outerjoin

테이블 또는 타임테이블 두 개 간 외부 결합

구문

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

설명

예제

C = outerjoin(A,B)는 동일한 이름을 가진 모든 변수를 키 변수로 사용하여 행을 일치시킴으로써 AB 사이의 외부 결합으로서 테이블 또는 타임테이블 C를 생성합니다. 외부 결합은 테이블 및 타임테이블의 특정한 조합에서 수행할 수 있습니다.

  • A가 테이블이면 B도 테이블이어야 합니다. outerjoinC를 테이블로 반환합니다.

  • A가 타임테이블이면 B는 테이블이거나 타임테이블일 수 있습니다. outerjoin은 입력값들의 두 가지 조합 어느 쪽에 대해서도 C를 타임테이블로 반환합니다.

외부 결합은 키 변수를 기준으로 AB 간에 일치하는 행과 A 또는 B의 일치하지 않는 행을 포함합니다. C는 키 변수를 비롯해 AB의 모든 변수를 포함합니다.

AB의 행 레이블은 키 변수일 수 있습니다. 행 레이블은 테이블의 행 이름 또는 타임테이블의 행 시간값입니다.

예제

C = outerjoin(A,B,Name,Value)는 하나 이상의 Name,Value 쌍 인수로 지정된 추가 옵션을 통해 외부 결합 연산을 수행합니다.

예제

[C,ia,ib] = outerjoin(___)C의 행과 AB 각각의 행 사이의 대응 관계를 나타내는 인덱스 벡터 iaib를 반환합니다. 이 구문은 이전 구문의 모든 입력 인수와 함께 사용할 수 있습니다.

예제

모두 축소

테이블 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'    

A와 하나의 공통 변수 FavoriteFood를 가지고 있는 테이블 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 함수를 사용하여 테이블 AB의 데이터로 새 테이블 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_A)와 B의 키 변수에 대한 개별 변수(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 

테이블 AB 간의 공통된 값을 변수 Key1에 포함할 뿐만 아니라, A에 없는 값도 Key1 값으로 포함하는 행을 갖는 테이블 B를 생성합니다.

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 함수를 사용하여 테이블 AB의 데이터로 새 테이블 C를 생성합니다. 키 값을 출력 테이블 C의 단일 변수로 병합합니다.

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 

테이블 C의 변수 중 A에서 온 변수는 B와 일치하는 항목이 없는 행에 null 값을 포함합니다. 마찬가지로, C의 변수 중 B에서 온 변수는 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 

테이블 AB 간의 공통된 값을 변수 Key1에 포함할 뿐만 아니라, A에 없는 값도 Key1 값으로 포함하는 행을 갖는 테이블 B를 생성합니다.

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 함수를 사용하여 테이블 AB의 데이터로 새 테이블 C를 생성합니다. 키 변수 Key1에서 공통 값을 가지는 행은 대응시키고, 키 값이 일치하지 않는 행은 그대로 유지합니다.

C의 행과 AB 각각의 행 사이의 대응 관계를 나타내는 인덱스 벡터 iaib 역시 반환합니다.

[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

인덱스 벡터 iaib에 포함된 0은 테이블 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 

테이블 AB 간의 공통된 값을 변수 Key1에 포함할 뿐만 아니라, A에 없는 값도 Key1 값으로 포함하는 행을 갖는 테이블 B를 생성합니다.

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 함수를 사용하여 테이블 AB의 데이터로 새 테이블 C를 생성합니다. B에서 키 값이 A의 행과 일치하지 않는 행은 무시합니다.

C의 행과 AB 각각의 행 사이의 대응 관계를 나타내는 인덱스 벡터 iaib 역시 반환합니다.

[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의 어떤 값도 0이 아니며, 이는 C의 모든 행이 A의 행과 대응 관계에 있음을 나타냅니다.

두 개의 타임테이블 AB를 생성합니다. 이 두 타임테이블은 몇 개의 공통 행 시간값을 가지고, 서로의 타임테이블에 없는 행 시간값도 포함합니다.

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  

입력 인수

모두 축소

입력 테이블로, 테이블이나 타임테이블로 지정됩니다.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: 'Keys',2A의 두 번째 변수와 B의 두 번째 변수를 키 변수로 사용합니다.

키로 사용할 변수로, 'Keys'와 함께 양의 정수, 양의 정수로 구성된 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 배열 또는 논리형 벡터가 쉼표로 구분되어 지정됩니다.

'Keys' 이름-값 쌍의 인수는 'LeftKeys''RightKeys' 이름-값 쌍의 인수와 함께 사용할 수 없습니다.

행 레이블은 단독 키이거나 다른 키 변수와 조합된 키일 수 있습니다. 자세한 내용은 섹션을 참조하십시오.

예: 'Keys',[1 3]AB의 첫 번째와 세 번째 변수를 키 변수로 사용합니다.

A에서 키로 사용할 변수로, 'LeftKeys'와 함께 양의 정수, 양의 정수로 구성된 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 배열 또는 논리형 벡터가 쉼표로 구분되어 지정됩니다.

'LeftKeys' 이름-값 쌍의 인수는 'RightKeys' 이름-값 쌍의 인수와 함께 사용해야 합니다. 'LeftKeys''RightKeys'는 모두 동일한 수의 키 변수를 지정해야 합니다. outerjoin은 키 값의 순서에 기초하여 키 값의 쌍을 지정합니다.

행 레이블은 단독 키이거나 다른 키 변수와 조합된 키일 수 있습니다. 자세한 내용은 섹션을 참조하십시오.

예: 'LeftKeys',1A의 첫 번째 변수만 키 변수로 사용합니다.

B에서 키로 사용할 변수로, 'RightKeys'와 함께 양의 정수, 양의 정수로 구성된 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 배열 또는 논리형 벡터가 쉼표로 구분되어 지정됩니다.

'RightKeys' 이름-값 쌍의 인수는 'LeftKeys' 이름-값 쌍의 인수와 함께 사용해야 합니다. 'LeftKeys''RightKeys'는 모두 동일한 수의 키 변수를 지정해야 합니다. outerjoin은 키 값의 순서에 기초하여 키 값의 쌍을 지정합니다.

행 레이블은 단독 키이거나 다른 키 변수와 조합된 키일 수 있습니다. 자세한 내용은 섹션을 참조하십시오.

예: 'RightKeys',3B의 세 번째 변수만 키 변수로 사용합니다.

키 병합 플래그로, 'MergeKeys'와 함께 false, true, 0, 1 중 하나가 쉼표로 구분되어 지정됩니다.

false

outerjoin은 테이블 A와 테이블 B의 각 키 변수 쌍에 대해, 두 개의 개별 변수를 출력 테이블 C에 포함합니다.

이는 디폴트 동작입니다.

true

outerjoin은 테이블 A와 테이블 B의 각 키 변수 쌍에 대해, 단일 변수를 출력 테이블 C에 포함합니다.

outerjoinA의 키 값과 B의 키 값을 병합해 단일 변수를 만들어, 대응하는 행이 A에 존재하면 A에서 값을 가져오고 B에 존재하면 B에서 값을 가져옵니다.

  • 키 변수 쌍의 키를 한 개만 포함하도록 'LeftVariables' 또는 'RightVariables'를 지정하면, outerjoin은 두 키 변수의 값을 모두 포함하는 병합된 키를 출력 테이블에 포함합니다.

  • 키 변수 쌍의 두 키를 모두 제외하도록 'LeftVariables''RightVariables'를 지정하면, outerjoin은 병합된 키 변수를 출력 테이블에 포함하지 않습니다.

C에 포함시킬 A의 변수로, 'LeftVariables'와 함께 양의 정수, 양의 정수로 구성된 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 배열 또는 논리형 벡터가 쉼표로 구분되어 지정됩니다.

'LeftVariables'를 사용하여 키 변수뿐 아니라 키가 아닌 변수를 출력 인수 C에 포함시키거나 제외할 수 있습니다.

기본적으로 outerjoinA의 모든 변수를 포함합니다.

C에 포함시킬 B의 변수로, 'RightVariables'와 함께 양의 정수, 양의 정수로 구성된 벡터, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 배열 또는 논리형 벡터가 쉼표로 구분되어 지정됩니다.

'RightVariables'를 사용하여 키 변수뿐 아니라 키가 아닌 변수를 출력 인수 C에 포함시키거나 제외할 수 있습니다.

기본적으로 outerjoinB의 모든 변수를 포함합니다.

외부 결합 연산의 유형으로, 'Type'과 함께 'full', 'left', 'right' 중 하나가 쉼표로 구분되어 지정됩니다.

  • 왼쪽 외부 결합의 경우, B의 어떤 값과도 일치하지 않는 A의 키 값은 그 행이 C에 포함됩니다. 그러나 반대의 경우에는 포함되지 않습니다.

  • 오른쪽 외부 결합의 경우, A의 어떤 값과도 일치하지 않는 B의 키 값은 그 행이 C에 포함됩니다. 그러나 반대의 경우에는 포함되지 않습니다.

기본적으로, outerjoin은 완전 외부 조인을 수행하고 AB 모두의 일치하지 않는 행을 포함합니다.

출력 인수

모두 축소

AB의 외부 결합으로, 테이블로 반환됩니다. 테이블 A와 테이블 B에서 동일한 키 값 조합을 공유하는 행의 쌍마다 한 행씩 출력 테이블 C에 포함됩니다. AB가 동일한 이름을 가진 변수를 포함할 경우, outerjoinC에서 대응하는 변수 이름에 고유한 접미사를 추가합니다. C의 변수 중 A에서 온 변수는 B와 일치하는 항목이 없는 행에 null 값을 포함합니다. 마찬가지로, C의 변수 중 B에서 온 변수는 A와 일치하는 항목이 없는 행에 null 값을 포함합니다.

일반적으로, 키 변수에 동일한 값 조합을 포함하는 행이 테이블 Am개 있고 테이블 Bn개가 있는 경우, 테이블 C에는 해당 조합에 대해 m*n개 행이 포함됩니다. 또한, 한 입력 테이블에 다른 입력 테이블의 어떤 행과도 일치하지 않는 키 값 조합이 있는 경우 그에 해당하는 행도 C에 포함됩니다.

C는 키 변수 값으로 정렬된 A(ia,LeftVars)B(ib,RightVars)의 가로 결합(Concatenate)을 포함합니다. 기본적으로 LeftVarsA의 모든 변수로, RightVarsB의 모든 변수로 구성됩니다. 그렇지 않은 경우 LeftVars'LeftVariables' 이름-값 쌍의 인수로 지정된 변수로 구성되며, RightVars'RightVariables' 이름-값 쌍의 인수로 지정된 변수로 구성됩니다.

설명, 변수 단위, 변수 이름, 행 이름과 같은 메타데이터를 추가로 테이블에 저장할 수 있습니다. 자세한 내용은 table의 속성 섹션을 참조하십시오.

A에 대한 인덱스로, 열 벡터로 반환됩니다. ia의 각 요소는 출력 테이블 C의 행에 대응하는 테이블 A의 행을 식별합니다. 벡터 ia에 포함된 0은 A의 행에 대응하지 않는 C의 행을 나타냅니다.

B에 대한 인덱스로, 열 벡터로 반환됩니다. ib의 각 요소는 출력 테이블 C의 행에 대응하는 테이블 B의 행을 식별합니다. 벡터 ib에 포함된 0은 B의 행에 대응하지 않는 C의 행을 나타냅니다.

세부 정보

모두 축소

키 변수

입력 테이블 AB 간의 데이터를 일치시키고 결합하는 데 사용되는 변수입니다.

입력 테이블 AB의 행 레이블은 단독 키이거나 다른 키 변수와 조합된 키일 수 있습니다. 행 레이블은 테이블의 행 이름 또는 타임테이블의 행 시간값입니다. 일반적으로, outerjoin은 입력 테이블 A에서 출력 테이블 C로 행 레이블을 복사합니다.

  • A에 행 레이블이 없으면 C에도 행 레이블이 없습니다.

  • A에 행 레이블이 있으면 outerjoinA에서 행 레이블을 복사하여 C에 행 레이블을 만듭니다.

    • AB 모두의 행 레이블을 키 쌍으로 지정하면 outerjoin은 필요한 경우 B의 행 레이블을 C의 행 레이블에 병합합니다.

    • A의 행 레이블을 키로 지정하되 B의 행 레이블을 일치하는 키로 지정하지 않으면, outerjoin은 필요한 경우 C에 디폴트 행 레이블을 생성합니다.

    • AB가 테이블인데 어떠한 입력 테이블의 행 이름도 키로 지정하지 않으면 outerjoinC에 행 이름을 만들지 않습니다.

A의 행 레이블을 왼쪽 키로 사용하고 B의 변수를 오른쪽 키로 사용하여 외부 결합을 수행할 수는 없습니다. 외부 결합을 수행하려면 A의 행 레이블을 테이블 변수로 변환하고 새 테이블 변수를 키로 사용하십시오.

참고 항목

|

R2013b에 개발됨