outerjoin

Внешнее соединение между двумя таблицами или расписаниями

Описание

пример

T = outerjoin(Tleft,Tright) создает таблицу или расписание, T, как внешнее соединение Tleft и Tright использование ключевых переменных. Все переменные с одинаковыми именами в обеих таблицах являются ключевыми переменными. Внешнее соединение объединяет строки таблицы, где ключевые переменные имеют совпадающие значения, но также включает строки, где ключевые переменные из одной входной таблицы не имеют совпадений в другой входной таблице. Для примера, если Tleft имеет переменные с именем Key1 и Var1, и Tright имеет переменные Key1 и Var2, затем T=outerjoin(Tleft,Tright) использует Key1 как ключевая переменная.

Совпадающие значения ключевых переменных в левой и правой таблицах не должны быть в одном порядке. Внешние соединения могут выполнять совпадения один к многим и многие к одному между ключевыми переменными двух таблиц. То есть значение, которое возникает один раз в ключевой переменной левой таблицы, может иметь несколько совпадений в правой таблице. Точно так же значение, которое возникает один раз в ключевой переменной правой таблицы, может иметь несколько совпадений в левой таблице.

Внешние соединения можно выполнять только для определенных комбинаций таблиц и расписаний.

  • Если Tleft является таблицей, тогда Tright должен быть таблицей. outerjoin возвращает T как таблица.

  • Если Tleft является расписанием, тогда Tright может быть таблицей или расписанием. outerjoin возвращает T как расписание для любой комбинации входов.

Векторы меток строк Tleft и Tright могут быть ключевыми переменными. Метки строк являются именами строк таблицы или временами строк расписания.

пример

T = outerjoin(Tleft,Tright,Name,Value) выполняет операцию внешнего соединения с дополнительными опциями, заданными одной или несколькими Name,Value аргументы в виде пар.

пример

[T,ileft,iright] = outerjoin(___) также возвращает векторы индекса, ileft и iright, что указывает на соответствие между строками в T и строки в Tleft и Tright соответственно. Можно использовать этот синтаксис с любым из входных параметров в предыдущих синтаксисах.

Примеры

свернуть все

Составьте таблицу, Tleft.

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

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

Составьте таблицу, Tright, с одной переменной, общей с Tleft, вызываемый FavoriteFood.

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

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

Используйте outerjoin функция для создания новой таблицы, T, с данными из таблиц Tleft и Tright.

T = outerjoin(Tleft,Tright)
T=7×5 table
    Age    FavoriteFood_Tleft    FavoriteFood_Tright    Calories    NutritionGrade
    ___    __________________    ___________________    ________    ______________

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

Табличные T содержит отдельную переменную для ключевой переменной от Tleft, вызываемый FavoriteFood_Tleft, и ключевая переменная от Tright, вызываемый FavoriteFood_Tright.

Составьте таблицу, 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 

Составьте таблицу, Tright, с общими значениями в переменной Key1 между таблицами Tleft и Tright, но также содержащие строки со значениями Key1 отсутствует в Tleft.

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  

Используйте outerjoin функция для создания новой таблицы, T, с данными из таблиц Tleft и Tright. Объедините ключевые значения в одну переменную в таблице выхода, T.

T = outerjoin(Tleft,Tright,'MergeKeys',true)
T=6×3 table
    Key1     Var1    Var2
    _____    ____    ____

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

Переменные в табличных T который пришел от Tleft содержат значения null в строках, не соответствующих Tright. Точно так же переменные в T который пришел от Tright содержат значения null в тех строках, которые не совпадали с Tleft.

Составьте таблицу, 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 

Составьте таблицу, Tright, с общими значениями в переменной Key1 между таблицами Tleft и Tright, но также содержащие строки со значениями Key1 отсутствует в Tleft.

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  

Используйте outerjoin функция для создания новой таблицы, T, с данными из таблиц Tleft и Tright. Сопоставьте строки с общими значениями в ключевой переменной, Key1, но также сохраните строки, ключевые значения которых не совпадают.

Кроме того, возвращайте векторы индекса, ileft и iright указывает соответствие между строками в T и строки в Tleft и Tright соответственно.

[T,ileft,iright] = outerjoin(Tleft,Tright)
T=6×4 table
    Key1_Tleft    Var1    Key1_Tright    Var2
    __________    ____    ___________    ____

    {'a'     }      1     {'a'     }       4 
    {'b'     }      2     {'b'     }       5 
    {'c'     }      3     {0x0 char}     NaN 
    {0x0 char}    NaN     {'d'     }       6 
    {'e'     }     11     {'e'     }       7 
    {'h'     }     17     {0x0 char}     NaN 

ileft = 6×1

     1
     2
     3
     0
     4
     5

iright = 6×1

     1
     2
     0
     3
     4
     0

Векторы индекса ileft и iright содержать нули для указания строк в таблице T которые не соответствуют строкам в таблицах Tleft или Tright, соответственно.

Составьте таблицу, 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 

Составьте таблицу, Tright, с общими значениями в переменной Key1 между таблицами Tleft и Tright, но также содержащие строки со значениями Key1 отсутствует в Tleft.

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  

Используйте outerjoin функция для создания новой таблицы, T, с данными из таблиц Tleft и Tright. Игнорируйте строки в Tright ключевые значения которых не совпадают с никакими строками в Tleft.

Кроме того, возвращайте векторы индекса, ileft и iright указывает соответствие между строками в T и строки в Tleft и Tright соответственно.

[T,ileft,iright] = outerjoin(Tleft,Tright,'Type','left')
T=5×4 table
    Key1_Tleft    Var1    Key1_Tright    Var2
    __________    ____    ___________    ____

      {'a'}         1     {'a'     }       4 
      {'b'}         2     {'b'     }       5 
      {'c'}         3     {0x0 char}     NaN 
      {'e'}        11     {'e'     }       7 
      {'h'}        17     {0x0 char}     NaN 

ileft = 5×1

     1
     2
     3
     4
     5

iright = 5×1

     1
     2
     0
     4
     0

Все значения ileft ненулевые, что указывает на то, что все строки в T иметь соответствующие строки в Tleft.

Создайте два расписания, Tleft и Tright. У них есть несколько простых строк, но каждый также включает строки, которые не указаны в другом расписании.

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  

Объедините Tleft и Tright с внешним соединением. T1 соответствует строкам с общим временем строки, но также включает строки, которые не имеют совпадений.

T1 = outerjoin(Tleft,Tright)
T1=5×2 timetable
    Time     Var1_Tleft    Var1_Tright
    _____    __________    ___________

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

Объедините Tleft и Tright, но игнорируйте строки в Tright чье время строки не совпадает ни с одним временем строки в Tleft.

T2 = outerjoin(Tleft,Tright,'Type','left')
T2=4×2 timetable
    Time     Var1_Tleft    Var1_Tright
    _____    __________    ___________

    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',2 использует вторую переменную в Tleft и второй переменной в Tright как ключевые переменные.

Переменные для использования в качестве ключей, заданные как разделенная разделенными запятой парами, состоящая из 'Keys' и положительное целое число, вектор положительных целых чисел, вектор символов, массив ячеек из векторов символов, строковые массивы или логический вектор.

Вы не можете использовать 'Keys' аргумент пары "имя-значение" со 'LeftKeys' и 'RightKeys' Аргументы пары "имя-значение".

Вектор меток строк может быть ключом, отдельно или в комбинации с другими ключевыми переменными. Для получения дополнительной информации см. раздел « Советы».

Пример: 'Keys',[1 3] использует первую и третью переменные в Tleft и Tright как ключевые переменные.

Пример: 'Keys',{'X','Y'} использует переменные с именем X и Y в Tleft и Tright как ключевые переменные.

Пример: 'Keys','Row' использует векторы имен строк Tleft и Tright как ключевые переменные, если обе Tleft и Tright являются таблицами с именами строк.

Переменные для использования в качестве ключей в Tleft, заданная как разделенная разделенными запятой парами, состоящая из 'LeftKeys' и положительное целое число, вектор положительных целых чисел, вектор символов, массив ячеек из векторов символов, строковые массивы или логический вектор.

Вы должны использовать 'LeftKeys' аргумент пары "имя-значение" в сочетании со 'RightKeys' аргумент пары "имя-значение". 'LeftKeys' и 'RightKeys' оба должны задавать одинаковое количество ключевых переменных. outerjoin пар значений ключей на основе их порядка.

Вектор меток строк может быть ключом, отдельно или в комбинации с другими ключевыми переменными. Для получения дополнительной информации см. раздел « Советы».

Пример: 'LeftKeys',1 использует только первую переменную в Tleft как ключевая переменная.

Переменные для использования в качестве ключей в Tright, заданная как разделенная разделенными запятой парами, состоящая из 'RightKeys' и положительное целое число, вектор положительных целых чисел, вектор символов, массив ячеек из векторов символов, строковые массивы или логический вектор.

Вы должны использовать 'RightKeys' аргумент пары "имя-значение" в сочетании со 'LeftKeys' аргумент пары "имя-значение". 'LeftKeys' и 'RightKeys' оба должны задавать одинаковое количество ключевых переменных. outerjoin пар значений ключей на основе их порядка.

Вектор меток строк может быть ключом, отдельно или в комбинации с другими ключевыми переменными. Для получения дополнительной информации см. раздел « Советы».

Пример: 'RightKeys',3 использует только третью переменную в Tright как ключевая переменная.

Флаг слияния ключей, заданный как разделенная разделенными запятой парами, состоящая из 'MergeKeys' и любой из них false, true, 0 или 1.

false

outerjoin включает две отдельные переменные в таблице выхода, T, для каждой пары переменных ключа из таблиц Tleft и Tright.

Это поведение является поведением по умолчанию.

true

outerjoin включает одну переменную в таблице выхода, T, для каждой пары переменных ключа из таблиц Tleft и Tright.

outerjoin создает одну переменную путем слияния ключевых значений из Tleft и Tright, взятие значений из Tleft где соответствующая строка существует в Tleft, и взятия значений из Tright в противном случае.

  • Если вы задаете 'LeftVariables' или 'RightVariables' чтобы включить только один ключ из пары переменных ключа, затем outerjoin включает объединенный ключ, содержащий значения обеих ключевых переменных, в таблицу выхода.

  • Если вы задаете 'LeftVariables' и 'RightVariables' чтобы исключить обе клавиши из пары переменных ключа, затем outerjoin не включает объединенную ключевую переменную в таблицу выхода.

Переменные из Tleft для включения в T, заданная как разделенная разделенными запятой парами, состоящая из 'LeftVariables' и положительное целое число, вектор положительных целых чисел, вектор символов, массив ячеек из векторов символов, строковые массивы или логический вектор.

Можно использовать 'LeftVariables' чтобы включить или исключить ключевые переменные, а также неключевые переменные из выхода, T.

По умолчанию outerjoin включает все переменные из Tleft.

Переменные из Tright для включения в T, заданная как разделенная разделенными запятой парами, состоящая из 'RightVariables' и положительное целое число, вектор положительных целых чисел, вектор символов, массив ячеек из векторов символов, строковые массивы или логический вектор.

Можно использовать 'RightVariables' чтобы включить или исключить ключевые переменные, а также неключевые переменные из выхода, T.

По умолчанию outerjoin включает все переменные из Tright.

Тип операции внешнего соединения, заданный как разделенная разделенными запятой парами, состоящая из 'Type' и любой из них 'full' (означает полное внешнее соединение), 'left' (левое внешнее соединение), или 'right' (правое внешнее соединение).

  • Для полного внешнего соединения T включает все ключевые значения из обеих таблиц, как показано на схеме ниже.

  • Для левого внешнего соединения T включает ключевые значения в Tleft которые не соответствуют никаким ключевым значениям в Tright, но исключает ключевые значения в Tright которые не соответствуют никаким ключевым значениям в Tleft. Для примера на схеме ниже левое внешнее соединение исключает ключевое значение 7 из правой таблицы.

  • Для правого внешнего соединения T включает ключевые значения в Tright которые не соответствуют никаким ключевым значениям в Tleft, но исключает ключевые значения в Tleft которые не соответствуют никаким ключевым значениям в Tright. Для примера на схеме ниже правое внешнее соединение исключает ключевое значение 1 с левой таблицы.

По умолчанию outerjoin делает полное внешнее соединение и включает несопоставленные строки из обоих Tleft и Tright.

Выходные аргументы

свернуть все

Внешнее соединение из Tleft и Tright, возвращается как таблица. Таблица выхода, T, содержит по одной строке для каждой пары строк в таблицах Tleft и Tright которые имеют одну и ту же комбинацию ключевых значений. Если Tleft и Tright содержат переменные с таким же именем, outerjoin добавляет уникальный суффикс к соответствующим именам переменных в T. Переменные в T который пришел от Tleft содержат значения null в тех строках, которые не совпадали с Tright. Точно так же переменные в T который пришел от Tright содержат значения null в тех строках, которые не совпадали с Tleft.

В целом, если есть m строки в таблице Tleft и n строки в таблице Tright все они содержат одну и ту же комбинацию значений в ключевых переменных, таблица T содержит m*n строки для этой комбинации. T также содержит строки, соответствующие комбинациям ключевых значений в одной входной таблице, которые не совпадают ни с одной строкой в другой входной таблице.

T содержит горизонтальную конкатенацию Tleft(ileft,LeftVars) и Tright(iright,RightVars) отсортировано по значениям в ключевых переменных. По умолчанию LeftVars состоит из всех переменных Tleft, и RightVars состоит из всех переменных из Tright. В противном случае LeftVars состоит из переменных, заданных в 'LeftVariables' аргумент пары "имя-значение" и RightVars состоит из переменных, заданных в 'RightVariables' аргумент пары "имя-значение".

В таблице можно хранить дополнительные метаданные, такие как описания, переменные модули, имена переменных и имена строк. Для получения дополнительной информации смотрите раздел « Свойства» table.

Индексируйте к Tleft, возвращается как вектор-столбец. Каждый элемент ileft определяет строку в таблице Tleft который соответствует этой строке в таблице выхода, T. Векторная ileft содержит нули для указания строк в T которые не соответствуют строкам в Tleft.

Индексируйте к Tright, возвращается как вектор-столбец. Каждый элемент iright определяет строку в таблице Tright который соответствует этой строке в таблице выхода, T. Векторная iright содержит нули для указания строк в T которые не соответствуют строкам в Tright.

Подробнее о

свернуть все

Ключевая переменная

Переменная, используемая для согласования и объединения данных между входными таблицами, Tleft и Tright.

Совет

  • Вектор меток строк из входа таблицы или расписания может быть ключом, отдельно или в комбинации с другими ключевыми переменными. Метки строк являются именами строк таблицы или временами строк расписания. Чтобы использовать этот вектор в качестве ключа, задайте его как 'Row' (для имен строк таблицы), как имя вектора timetable с указанием времени строки или как значение T.Properties. DimensionNames {1}, где T - таблица или расписание.

    В целом, outerjoin копирует метки строк из таблицы входа Tleft в таблицу выхода T.

    • Если Tleft не имеет меток строк, тогда T не имеет меток строк.

    • Если Tleft имеет метки строк, затем outerjoin копирует метки строк из Tleft для создания меток строк в T.

      • Если вы задаете метки строк из обоих Tleft и Tright как пара ключей, тогда outerjoin объединяет метки строк из Tright в метки строк T где необходимо.

      • Если вы задаете метки строк Tleft как ключ, но не задавать метки строк Tright как соответствующий ключ, тогда outerjoin создает метки строк по умолчанию в T где необходимо.

      • Если оба Tleft и Tright являются таблицами, но вы не задаете в качестве ключа ни имена строк входной таблицы, тогда outerjoin не создает имена строк в T.

    Вы не можете выполнить внешнее соединение с помощью меток строк Tleft как левая клавиша и переменная Tright как правая клавиша. Чтобы выполнить внешнее соединение, преобразуйте метки строк Tleft для табличной переменной и используйте новую табличную переменную в качестве ключа.

Расширенные возможности

Введенный в R2013b