outerjoin

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

Описание

пример

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

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

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

  • Если 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 содержите нулевые значения в строках, которые не имеют никакого соответствия от Tright. Точно так же переменные в T это прибыло из Tright содержите нулевые значения в тех строках, которые не имели никакого соответствия от 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 имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

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

Пример: '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 значения ключа пар на основе их порядка.

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

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

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

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

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

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

Объедините ключевой флаг в виде разделенной запятой пары, состоящей из 'MergeKeys' и любой falseTRUE, 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 содержите нулевые значения в тех строках, которые не имели никакого соответствия от Tright. Точно так же переменные в T это прибыло из Tright содержите нулевые значения в тех строках, которые не имели никакого соответствия от Tleft.

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

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

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

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

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

Больше о

свернуть все

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

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

Советы

  • Вектор из меток строки из входной таблицы или расписания может быть ключевым, один или в сочетании с другими ключевыми переменными. Метки строки являются именами строки таблицы или времена строки расписания. Чтобы использовать этот вектор в качестве ключа, задайте его как 'Row' (для имен строки таблицы), как имя вектора расписания времен строки, или как значение 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