主要内容

outerjoin

外连接两个表或时间表

描述

例子

T= outerjoin (Tleft,Tright)创建表或时间表,T,因为外连接TleftTright使用关键变量。所有变量在两个表相同的名称是关键变量。外连接结合表行,关键变量匹配的值,但是它还包括行关键变量从一个输入表其他输入表中没有匹配。例如,如果Tleft有变量命名Key1Var1,Tright有变量Key1Var2,然后T = outerjoin (Tleft Tright)使用Key1作为一个关键变量。

输出变量T Key1_Tleft、Var1 Key1_Tright, Var2,结合了输入所有行,用缺失值填补空表元素。

匹配的关键变量的值在左和右表中没有相同的顺序。外部连接可以执行关键变量之间的一对多和多对一的比赛两个表。即一个值一旦发生在左边的一个关键变量表可以有多个匹配正确的表。同样,一旦发生在一个关键变量的值正确的表可以有多个匹配在左表。

您可以执行外部连接只在特定的组合表和时间表。

  • 如果Tleft是一个表,然后呢Tright必须是一个表。outerjoin返回T作为一个表。

  • 如果Tleft是一个时间表,然后呢Tright可以是一个表或一个时间表。outerjoin返回T作为一个时间表的输入组合。

行标签的向量TleftTright可关键变量。行标签是一个表的行名称,或行乘以一个时间表。

例子

T= outerjoin (Tleft,Tright,名称,值)执行外部联接操作由一个或多个指定附加选项名称,值对参数。

例子

(T,ileft,iright)= outerjoin (___)也回报指数向量,ileftiright,表明行之间的对应关系T和行TleftTright分别。您可以使用该语法的任何输入参数在前面的语法。

例子

全部折叠

创建一个表,Tleft

Tleft =表([5;12;23;2,15;6),{“麦片”;“披萨”;“鲑鱼”;“奥利奥”;“龙虾”;“披萨”},“VariableNames”,{“年龄”,“FavoriteFood”},“RowNames”,{“艾米”,“鲍比”,“冬青”,“哈利”,“马蒂”,“莎莉”})
Tleft =6×2表年龄FavoriteFood ___ _______艾米5{“麦片”}鲍比12{“披萨”}冬青23哈利2{“鲑鱼”}{“奥利奥”}马蒂15{“龙虾”}莎莉6{'披萨'}

创建一个表,Tright,有一个共同的变量Tleft,被称为FavoriteFood

({Tright =表“麦片”;“奥利奥”;“披萨”;“鲑鱼”;“蛋糕”},(110;160;140;367;243),{“- - -”;' D ';“B”;“B”;“C -”},“VariableNames”,{“FavoriteFood”,“卡路里”,“NutritionGrade”})
Tright =5×3表FavoriteFood卡路里NutritionGrade{“麦片”}110 _______ ________ * * *{“-”}{“奥利奥”}160 {' D '}{“披萨”}140 {B}{“鲑鱼”}367 {B}{‘蛋糕’}243 {' C - '}

使用outerjoin函数来创建一个新表,T,数据表TleftTright

T = outerjoin (Tleft Tright)
T =7×5表年龄FavoriteFood_Tleft FavoriteFood_Tright卡路里NutritionGrade ___ _____________南___________________ ________ * * * {0 x0 char}{‘蛋糕’}243 {' C -}{“麦片”}{“麦片”}110{“-”}15{“龙虾”}{0 x0 char}南{0 x0 char} 2{“奥利奥”}{“奥利奥”}160 {' D '}{“披萨”}{“披萨”}140 {B}{“披萨”}{“披萨”}140 {B} 23{“鲑鱼”}{“鲑鱼”}367 {B}

T包含一个单独的变量的关键变量Tleft,被称为FavoriteFood_Tleft和的关键变量Tright,被称为FavoriteFood_Tright

创建一个表,Tleft

({Tleft =表“一个”“b”“c”“e”“h”}”,[1 2 3 11 17]”,“VariableNames”,{“Key1”“Var1”})
Tleft =5×2表Key1 Var1 _____ _____ {a} 1 {b} 2 {' c '} 3 {“e”} 11 {' h '} 17

创建一个表,Tright变量,有共同的价值观Key1表之间的TleftTright,但也包含值的行Key1没有出现在Tleft

({Tright =表“一个”,“b”,' d ',“e”},(4、5、6、7)“VariableNames”,{“Key1”“Var2”})
Tright =4×2表Key1 Var2 _____ _____ {a} {b} 4 5 6 {' d '} {“e”} 7

使用outerjoin函数来创建一个新表,T,数据表TleftTright。合并的关键值到一个变量输出表中,T

T = outerjoin (Tleft Tright,“MergeKeys”,真正的)
T =6×3表Key1 Var1 Var2 _____ _____ _____ {a} {b} 1 4 2 5 {' c '} 3南{' d '}南6 {“e”} 11 7 {' h '} 17 NaN

变量在表T来自Tleft包含null值不匹配的行Tright。同样,变量T来自Tright包含null值在那些从没有匹配的行Tleft

创建一个表,Tleft

({Tleft =表“一个”“b”“c”“e”“h”}”,[1 2 3 11 17]”,“VariableNames”,{“Key1”“Var1”})
Tleft =5×2表Key1 Var1 _____ _____ {a} 1 {b} 2 {' c '} 3 {“e”} 11 {' h '} 17

创建一个表,Tright变量,有共同的价值观Key1表之间的TleftTright,但也包含值的行Key1没有出现在Tleft

({Tright =表“一个”,“b”,' d ',“e”},(4、5、6、7)“VariableNames”,{“Key1”“Var2”})
Tright =4×2表Key1 Var2 _____ _____ {a} {b} 4 5 6 {' d '} {“e”} 7

使用outerjoin函数来创建一个新表,T,数据表TleftTright。匹配行关键变量的共同的价值观,Key1,但也保留键值没有匹配的行。

同时,回报指数向量,ileftiright指示行之间的对应关系T和行TleftTright分别。

[T ileft iright] = outerjoin (Tleft Tright)
T =6×4表Key1_Tleft Var1 Key1_Tright Var2 __________ ___________上{a} 1 {a} 4 {b} 2 {b} 5 {' c '} 3 {0 x0 char}南{0 x0 char}南6 {' d '} {“e”} 11 {“e”} 7 {' h '} 17 {0 x0 char} NaN
ileft =6×10 1 2 3 4 5
iright =6×11 2 3 0 4 0

索引向量ileftiright包含0指示表中的行T不对应表中的行TleftTright,分别。

创建一个表,Tleft

({Tleft =表“一个”“b”“c”“e”“h”}”,[1 2 3 11 17]”,“VariableNames”,{“Key1”“Var1”})
Tleft =5×2表Key1 Var1 _____ _____ {a} 1 {b} 2 {' c '} 3 {“e”} 11 {' h '} 17

创建一个表,Tright变量,有共同的价值观Key1表之间的TleftTright,但也包含值的行Key1没有出现在Tleft

({Tright =表“一个”,“b”,' d ',“e”},(4、5、6、7)“VariableNames”,{“Key1”“Var2”})
Tright =4×2表Key1 Var2 _____ _____ {a} {b} 4 5 6 {' d '} {“e”} 7

使用outerjoin函数来创建一个新表,T,数据表TleftTright。忽视行Tright的键值不匹配行吗Tleft

同时,回报指数向量,ileftiright指示行之间的对应关系T和行TleftTright分别。

[T ileft iright] = outerjoin (Tleft Tright,“类型”,“左”)
T =5×4表Key1_Tleft Var1 Key1_Tright Var2 __________ ___________上{a} 1 {a} 4 {b} 2 {b} 5 {' c '} 3 {0 x0 char}南11 {“e”} {“e”} 7 {' h '} 17 {0 x0 char} NaN
ileft =5×11 2 3 4 5
iright =5×11 2 0 4 0

所有的值ileft非零表示都是行吗T有相应的行Tleft

创建两个时间表,TleftTright。他们有一些行乘以共同点,但每个还包括行乘以没有时间表。

Tleft =时间表(秒([1,2,4,6]),11 (1 2 3)”)
Tleft =4×1的时间表Var1 _____ __ 1秒1 2秒2 4秒3 6秒11
Tright =时间表(秒([2、4、6、7]),[4 5 6 7]”)
Tright =4×1的时间表Var1 _____ __ 2秒4 4秒5 6秒6 7秒7

结合TleftTright外连接。T1与常见的行乘以匹配的行,但也包括没有匹配的行。

T1 = outerjoin (Tleft Tright)
T1 =5×2时间表时间Var1_Tleft Var1_Tright _____ __________⒈1秒1南2秒2 4 4秒3 5 6秒11 6 7秒南7

结合TleftTright,但忽视行Tright行乘以不匹配的行次吗Tleft

T2 = outerjoin (Tleft Tright,“类型”,“左”)
T2 =4×2时间表时间Var1_Tleft Var1_Tright _____ __________⒈1秒1南2秒2 4 4秒3 5 6秒11 6

输入参数

全部折叠

左表,指定为一个表或一个时间表。

正确的表,指定为一个表或一个时间表。

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“钥匙”,2使用第二个变量Tleft第二个变量Tright作为关键变量。

变量作为键指定为逗号分隔组成的“钥匙”一个正整数,向量的正整数,字符串数组,特征向量,单元阵列的特征向量,模式标量,或逻辑向量。

你不能使用“钥匙”名称-值对论点的“LeftKeys”“RightKeys”名称-值对参数。

一个向量的行标签可以是一个关键,单独或结合其他关键变量。有关更多信息,请参见提示部分。

例子:“钥匙”,[1 3]使用第一个和第三个变量TleftTright作为关键变量。

例子:“钥匙”,{' X ', ' Y '}使用的变量命名XYTleftTright作为关键变量。

例子:“钥匙”,“行”使用行名称的向量TleftTright关键变量,如果两个TleftTright表有行名称。

变量作为键Tleft,指定为逗号分隔两人组成的“LeftKeys”一个正整数,向量的正整数,字符串数组,特征向量,单元阵列的特征向量,模式标量,或逻辑向量。

你必须使用“LeftKeys”名称-值对参数结合“RightKeys”名称-值对的论点。“LeftKeys”“RightKeys”都必须指定相同数量的关键变量。outerjoin根据他们的订单对键值。

一个向量的行标签可以是一个关键,单独或结合其他关键变量。有关更多信息,请参见提示部分。

例子:“LeftKeys”, 1只使用第一个变量Tleft作为一个关键变量。

变量作为键Tright,指定为逗号分隔两人组成的“RightKeys”一个正整数,向量的正整数,字符串数组,特征向量,单元阵列的特征向量,模式标量,或逻辑向量。

你必须使用“RightKeys”名称-值对参数结合“LeftKeys”名称-值对的论点。“LeftKeys”“RightKeys”都必须指定相同数量的关键变量。outerjoin根据他们的订单对键值。

一个向量的行标签可以是一个关键,单独或结合其他关键变量。有关更多信息,请参见提示部分。

例子:“RightKeys”, 3只使用第三个变量Tright作为一个关键变量。

合并钥匙标志,指定为逗号分隔组成的“MergeKeys”,要么,真正的,01

outerjoin输出表中包括两个独立的变量,T,对于每一个关键变量对表TleftTright

这种行为是默认的行为。

真正的

outerjoin包括一个单变量输出表中,T,对于每一个关键变量对表TleftTright

outerjoin创建一个变量通过合并的键值TleftTright,值Tleft相应的行存在于哪里Tleft和值Tright否则。

  • 如果您指定“LeftVariables”“RightVariables”包括只有一个键从一个关键变量对,outerjoin包括合并后的钥匙包含来自两个关键变量输出值表。

  • 如果您指定“LeftVariables”“RightVariables”从一对关键变量,排除这两个键outerjoin不包括合并输出表中关键变量。

变量Tleft包括在T,指定为逗号分隔两人组成的“LeftVariables”一个正整数,向量的正整数,字符串数组,特征向量,单元阵列的特征向量,模式标量,或逻辑向量。

您可以使用“LeftVariables”包括或排除关键变量以及nonkey从输出变量,T

默认情况下,outerjoin包括所有的变量Tleft

变量Tright包括在T,指定为逗号分隔两人组成的“RightVariables”一个正整数,向量的正整数,字符串数组,特征向量,单元阵列的特征向量,模式标量,或逻辑向量。

您可以使用“RightVariables”包括或排除关键变量以及nonkey从输出变量,T

默认情况下,outerjoin包括所有的变量Tright

类型的外部连接操作,指定为逗号分隔组成的“类型”,要么“全部”(即全外连接),“左”(左外连接),或“对”(右外连接)。

  • 全外连接的输入TleftTright,输出T结合所有行输入,用缺失值填补空表元素。

  • 左外连接,输出T包括所有的行Tleft,但不包括行Tright的键值不匹配的任何键值吗Tleft

  • 右外连接,T包括所有的行Tright,但不包括行Tleft的键值不匹配的任何键值吗Tright

默认情况下,outerjoin做一个完整的外连接,包括从无与伦比的行TleftTright

输出参数

全部折叠

外连接的TleftTright,作为一个表返回。输出表,T,包含一个行中每一对行的表TleftTright共享相同的键值的组合。如果TleftTright包含同名的变量,outerjoin增加了一个独特的后缀中相应的变量名T。变量T来自Tleft包含null值在那些从没有匹配的行Tright。同样,变量T来自Tright包含null值在那些从没有匹配的行Tleft

一般来说,如果有行表Tleftn行表Tright所有包含相同的关键变量中的值,表T包含m * n行组合。T还包含行对应一个输入表中的键值组合不匹配任何其他输入表行。

T包含的水平连接Tleft (ileft LeftVars)Tright (iright RightVars)按关键变量中的值排序。默认情况下,LeftVars包括所有的变量Tleft,RightVars包括所有的变量Tright。否则,LeftVars由指定的变量“LeftVariables”名称-值对的观点,RightVars由指定的变量“RightVariables”名称-值对的论点。

您可以储存额外的元数据,如描述、变量单位,表中的变量名和行名称。有关更多信息,请参见属性的部分

索引Tleft,作为一个列向量返回。的每个元素ileft标识表中的行Tleft输出表中对应于这一行,T。向量ileft包含行0来表示T不对应于行Tleft

索引Tright,作为一个列向量返回。的每个元素iright标识表中的行Tright输出表中对应于这一行,T。向量iright包含行0来表示T不对应于行Tright

更多关于

全部折叠

关键变量

变量用于匹配和组合之间的数据输入表,TleftTright

提示

  • 表标签从输入向量的行或时间表可以是一个关键,单独或结合其他关键变量。行标签是一个表的行名称或行乘以一个时间表。使用这个向量作为一个关键,指定它“行”(一个表的行名称),正如它的名字行乘以一个时间表向量,或作为的价值T.Properties.DimensionNames {1},在那里T是表或时间表。

    一般来说,outerjoin行标签从输入表副本Tleft输出表T

    • 如果Tleft没有行标签呢T没有行标签。

    • 如果Tleft行标签,然后outerjoin行标签副本从Tleft创建行标签T

      • 如果指定两行标签TleftTright作为一个密钥对outerjoin合并行标签从Tright到行标签T在需要的地方。

      • 如果你指定的行标签Tleft作为一个关键,但没有指定的行标签Tright作为匹配的关键outerjoin创建默认行标签T在需要的地方。

      • 如果两个TleftTright表,但你没有指定名称作为键,输入表的行吗outerjoin不创建行名称T

    你不能执行外连接使用的行标签Tleft左边的键和一个变量Tright正确的关键。执行外连接,转换的行标签Tleft表变量和使用新表变量作为一个关键。

扩展功能

版本历史

介绍了R2013b

另请参阅

||