MATLAB中两个表的联合,只在一个表中取行

时间:2016-01-07 18:20:09

标签: matlab

假设我有两个MATLAB表:

>> x = table({'a' 'b' 'c' 'd'}', (1:4)', 'VariableNames', {'theKey' 'theValue'})
x = 
    theKey    theValue
    ______    ________
    'a'       1       
    'b'       2       
    'c'       3       
    'd'       4       
>> y = table({'b' 'c'}', [998 999]', 'VariableNames', {'theKey' 'theValue'})
y = 
    theKey    theValue
    ______    ________
    'b'       998      
    'c'       999   

是否有一个过程(某些类型/ union / join / outerjoin的组合)可以返回两个表的并集,但是如果根据我选择的键有重复,则只保留第二个表中的行( theKey)?例如,我希望得到这个输出:

    theKey    theValue
    ______    ________
    'a'       1       
    'b'       998       
    'c'       999       
    'd'       4       

谢谢!

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,那么您正在使用matlab中的outerjoin查看联合。我认为只有这样才能通过连接来实现这一点,但你可能必须使用索引来玩一些游戏。

>> b=outerjoin(x,y,'Type','left','MergeKeys',true,'LeftKeys',{'theKey'},'RightKeys',{'theKey'})

ans = 

    theKey    theValue_x    theValue_y
    ______    __________    __________

    'a'       1             NaN       
    'b'       2             998       
    'c'       3             999       
    'd'       4             NaN       

>> b.(2)(~isnan(b.(3)))=b.(3)(~isnan(b.(3)))

    theKey    theValue_x    theValue_y
    ______    __________    __________

    'a'       1             NaN       
    'b'       998           998       
    'c'       999           999       
    'd'       4             NaN   

>> b.(3)=[]

    theKey    theValue_x
    ______    __________

    'a'         1       
    'b'       998       
    'c'       999       
    'd'         4