首页 > 解决方案 > Matlab`outerjoin`:如何为`Keys`指定`RowNames`

问题描述

Matlab 的文档outerjoin说“行标签”可用于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'. 

我想知道如何解释文档。任何帮助,将不胜感激。

后记

似乎文档缺少的不仅仅是如何RowNames指定Keys. 它也没有描述默认键。从测试来看,默认键似乎是具有匹配名称的列:

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

标签: matlabouter-join

解决方案


TMW 通过引用在线文档“ Use Row Labels as Grouping or Key Variables ”提供了答案。如果指定了关键字,则表RowNames将用作参数。 指第一个维度的名称而不是实际字段。KeysRowRow

上述解决方案仅适用于 R2016b 以后。早期版本的解决方案是复制RowNames到实际字段,然后使用该字段作为Keys参数。


推荐阅读