文档

outerjoin

两个表或时间表之间的外部连接

描述

例子

T= outerjoin (TleftTright创建表格或时间表,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 (TleftTright名称,值使用一个或多个指定的附加选项执行外部连接操作名称,值对参数。

例子

Tileftiright) = outerjoin (___也返回索引向量,ileft而且iright中行之间的对应关系T和行Tleft而且Tright分别。您可以将此语法与前面语法中的任何输入参数一起使用。

例子

全部折叠

创建一个表,Tleft

Tleft =表([5;12;23;2,15;6),...“麦片”“披萨”“鲑鱼”“奥利奥”“龙虾”“披萨”},...“VariableNames”,{“年龄”“FavoriteFood”},...“RowNames”,{“艾米”“鲍比”“冬青”“哈利”“马蒂”“莎莉”})
Tleft =6×2表年龄最喜欢的食物___ ____________ Amy 5 {'cheerios'} Bobby 12 {'pizza'} Holly 23 {'salmon'} Harry 2 {'oreos'} Marty 15 {'lobster'} Sally 6 {'pizza'}

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

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

使用outerjoin函数来创建一个新表,T,数据来自表格Tleft而且Tright

T = outerjoin (Tleft Tright)
T =7×5表年龄FavoriteFood_Tleft NutritionGrade FavoriteFood_Tright卡路里  ___ __________________ ___________________ ________ ______________ 南{0 x0 char}{‘蛋糕’}243 {' C -}{“麦片”}{“麦片”}110{“-”}15{“龙虾”}{0 x0 char}南2 {0 x0 char}{“奥利奥”}{“奥利奥”}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  _____ ____ {' 2 '} 1 {b} {' c '} 3{“e”}11 {' h '} 17

创建一个表,Tright,在变量中使用公共值Key1表之间的Tleft而且Tright,但也包含值为的行Key1没有出现在Tleft

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

使用outerjoin函数来创建一个新表,T,数据来自表格Tleft而且Tright.将关键值合并到输出表中的单个变量中,T

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

变量在表T来自Tleft在没有匹配的行中包含空值Tright.同样,变量T来自Tright在那些没有匹配的行中包含空值Tleft

创建一个表,Tleft

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

创建一个表,Tright,在变量中使用公共值Key1表之间的Tleft而且Tright,但也包含值为的行Key1没有出现在Tleft

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

使用outerjoin函数来创建一个新表,T,数据来自表格Tleft而且Tright.用键变量中的公共值匹配行,Key1,但也保留键值不匹配的行。

同样,返回索引向量,ileft而且iright中行之间的对应关系T和行Tleft而且Tright分别。

[T ileft iright] = outerjoin (Tleft Tright)
T =6×4表Key1_Tleft Var1 Key1_Tright Var2  __________ ____ ___________ ____ {' “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×11 2 3 0 4 5
iright =6×11 2 0 3 4 0

索引向量ileft而且iright包含0来表示表中的行T与表中的行不对应的TleftTright,分别。

创建一个表,Tleft

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

创建一个表,Tright,在变量中使用公共值Key1表之间的Tleft而且Tright,但也包含值为的行Key1没有出现在Tleft

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

使用outerjoin函数来创建一个新表,T,数据来自表格Tleft而且Tright.忽视行Tright哪些键值与其中的任何行都不匹配Tleft

同样,返回索引向量,ileft而且iright中行之间的对应关系T和行Tleft而且Tright分别。

[T ileft iright] = outerjoin (Tleft Tright,“类型”“左”
T =5×4表Key1_Tleft Var1 Key1_Tright Var2  __________ ____ ___________ ____ {' “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

创建两个时间表,Tleft而且Tright.它们有一些相同的行时间,但每一个都包含另一个时间表中没有的行时间。

Tleft =时间表(seconds([1;2;4;6]),[1 2 3 11]')
Tleft =4×2时间表时间Var1 _____ ____ 1秒1 2秒2 4秒3 6秒11
right =时间表(seconds([2;4;6;7]),[4 5 6 7]')
Tright =4×2时间表时间Var1 _____ ____ 2秒4 4秒5 6秒6 7秒7

结合Tleft而且Tright通过外部连接。T1用公共行时间匹配行,但也包括没有匹配的行。

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

结合Tleft而且Tright,但忽略行Tright谁的行时间与其中的任何行时间不匹配Tleft

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

输入参数

全部折叠

左表,指定为表格或时间表。

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

名称-值对的观点

指定逗号分隔的可选对名称,值参数。的名字参数名称和价值对应的值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

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

要用作键的变量,指定为逗号分隔的一对,由“钥匙”以及正整数、正整数的向量、字符向量、字符向量的单元格数组、字符串数组或逻辑向量。

您不能使用“钥匙”参数的名称-值对参数“LeftKeys”而且“RightKeys”名称-值对参数。

行标签的向量可以是键,单独使用也可以与其他键变量组合使用。有关更多信息,请参见提示部分。

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

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

例子:“钥匙”,“行”的行名的向量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”,要么真正的01

outerjoin在输出表中包含两个单独的变量,T,对于表中的每个关键变量对Tleft而且Tright

此行为是默认行为。

真正的

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

外部连接操作的类型,指定为逗号分隔的对,由“类型”,要么“全部”(意思是完全的外部连接),“左”(左外连接),或“对”(右外连接)。

  • 对于完整的外部连接,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

一般来说,如果有的话行表Tleft而且n行表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

更多关于

全部折叠

关键变量

变量,用于匹配和组合输入表之间的数据,Tleft而且Tright

提示

来自输入表或时间表的行标签向量可以是一个键,也可以与其他键变量结合使用。行标签是表的行名或时间表的行时间。若要将此向量用作键,请将其指定为“行”(对于表的行名),作为行时间的时间表向量的名称,或作为的值T.Properties.DimensionNames {1},在那里T是表格或时间表。

一般来说,outerjoin从输入表复制行标签Tleft到输出表T

  • 如果Tleft那么,是否没有行标签T没有行标签。

  • 如果Tleft那么是否有行标签outerjoinTleft中创建行标签T

    • 如果从两者中指定行标签Tleft而且Tright那么,作为密钥对outerjoin从合并行标签Tright的行标签T在需要的地方。

    • 的行标签Tleft的行标签,但不指定Tright作为匹配的键,那么outerjoin中创建默认行标签T在需要的地方。

    • 如果两个Tleft而且Tright是表,但没有指定任何输入表的行名作为键,那么outerjoin中未创建行名T

的行标签不能执行外部连接Tleft作为左键和变量Tright作为右键。的行标签要执行外部连接,请转换Tleft,并使用新表变量作为键。

扩展功能

另请参阅

||

介绍了R2013b