Matlab `outerjoin`:如何为 `Keys` 指定 `RowNames`
Matlab `outerjoin`: How to specify `RowNames` for `Keys`
Matlab 的 outerjoin
文档说 "row labels" 可以用于 Keys
。它不提供这样做的语法。我的尝试没有成功:
>> A=table([1;2],'VariableNames',{'Av1'},'RowNames',{'hot','dog'})
A =
Av1
___
hot 1
dog 2
>> B=table([3;4],'VariableNames',{'Bv1'},'RowNames',{'hot','dog'})
B =
Bv1
___
hot 3
dog 4
>> outerjoin(A,B)
Error using table/outerjoin (line 114)
Cannot find a common table variable to use as a key variable.
>> outerjoin(A,B,'Keys','RowNames')
Error using table/outerjoin (line 114)
Unrecognized variable name 'RowNames'.
我想知道如何解释文档。任何帮助将不胜感激。
尾注
似乎文档缺少的不仅仅是如何
为 Keys
指定 RowNames
。它也没有描述默认值
键。从测试来看,默认键似乎是匹配的列
姓名:
A=array2table( [ 1 1 10; 1 2 20; 2 1 1; 2 2 20],...
'VariableNames',{'k1','k2','d'} )
B=array2table( [ 1 1 100; 1 2 200; 2 1 1; 2 2 200],...
'VariableNames',{'k1','k2','d'} )
outerjoin(A,B,'MergeKeys',true)
A =
k1 k2 d
__ __ __
1 1 10
1 2 20
2 1 1
2 2 20
B =
k1 k2 d
__ __ ___
1 1 100
1 2 200
2 1 1
2 2 200
ans =
k1 k2 d
__ __ ___
1 1 10
1 1 100
1 2 20
1 2 200
2 1 1
2 2 20
2 2 200
A=array2table( [ 1 1 10; 1 2 20; 2 1 1; 2 2 20],...
'VariableNames',{'k1','k2','d'} )
B=array2table( [ 1 1 100; 1 2 200; 2 1 1; 2 2 200],...
'VariableNames',{'k1','k2','e'} )
outerjoin(A,B,'MergeKeys',true)
A =
k1 k2 d
__ __ __
1 1 10
1 2 20
2 1 1
2 2 20
B =
k1 k2 e
__ __ ___
1 1 100
1 2 200
2 1 1
2 2 200
ans =
k1 k2 d e
__ __ __ ___
1 1 10 100
1 2 20 200
2 1 1 1
2 2 20 200
TMW 通过引用在线文档“Use Row Labels as Grouping or Key Variables”提供了答案。如果指定关键字 Row
,table 的 RowNames
将用作 Keys
参数。 Row
指的是第一个维度的名称,而不是实际的字段。
以上解决方案仅适用于R2016b以上版本。较早版本的解决方案是将 RowNames
复制到实际字段,然后将该字段用于 Keys
参数。
Matlab 的 outerjoin
文档说 "row labels" 可以用于 Keys
。它不提供这样做的语法。我的尝试没有成功:
>> A=table([1;2],'VariableNames',{'Av1'},'RowNames',{'hot','dog'})
A =
Av1
___
hot 1
dog 2
>> B=table([3;4],'VariableNames',{'Bv1'},'RowNames',{'hot','dog'})
B =
Bv1
___
hot 3
dog 4
>> outerjoin(A,B)
Error using table/outerjoin (line 114)
Cannot find a common table variable to use as a key variable.
>> outerjoin(A,B,'Keys','RowNames')
Error using table/outerjoin (line 114)
Unrecognized variable name 'RowNames'.
我想知道如何解释文档。任何帮助将不胜感激。
尾注
似乎文档缺少的不仅仅是如何
为 Keys
指定 RowNames
。它也没有描述默认值
键。从测试来看,默认键似乎是匹配的列
姓名:
A=array2table( [ 1 1 10; 1 2 20; 2 1 1; 2 2 20],...
'VariableNames',{'k1','k2','d'} )
B=array2table( [ 1 1 100; 1 2 200; 2 1 1; 2 2 200],...
'VariableNames',{'k1','k2','d'} )
outerjoin(A,B,'MergeKeys',true)
A =
k1 k2 d
__ __ __
1 1 10
1 2 20
2 1 1
2 2 20
B =
k1 k2 d
__ __ ___
1 1 100
1 2 200
2 1 1
2 2 200
ans =
k1 k2 d
__ __ ___
1 1 10
1 1 100
1 2 20
1 2 200
2 1 1
2 2 20
2 2 200
A=array2table( [ 1 1 10; 1 2 20; 2 1 1; 2 2 20],...
'VariableNames',{'k1','k2','d'} )
B=array2table( [ 1 1 100; 1 2 200; 2 1 1; 2 2 200],...
'VariableNames',{'k1','k2','e'} )
outerjoin(A,B,'MergeKeys',true)
A =
k1 k2 d
__ __ __
1 1 10
1 2 20
2 1 1
2 2 20
B =
k1 k2 e
__ __ ___
1 1 100
1 2 200
2 1 1
2 2 200
ans =
k1 k2 d e
__ __ __ ___
1 1 10 100
1 2 20 200
2 1 1 1
2 2 20 200
TMW 通过引用在线文档“Use Row Labels as Grouping or Key Variables”提供了答案。如果指定关键字 Row
,table 的 RowNames
将用作 Keys
参数。 Row
指的是第一个维度的名称,而不是实际的字段。
以上解决方案仅适用于R2016b以上版本。较早版本的解决方案是将 RowNames
复制到实际字段,然后将该字段用于 Keys
参数。