假设我有两个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
谢谢!
答案 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