Concatenate vertically multiple tables with different dimensions
44 views (last 30 days)
Show older comments
I'd like to concatenate vertically several tables with common and uncommon columns: in this example code columns is common to A and B but not the others. The example expected result is C. In this example Type doesnt exist for A, then in C it is replaced by Nan. In my example, there are only 2 tables with one common column. I need to do this for 8 tables with 3 common columns and 5-7 columns in total.
A =
3×2 table
code Name
____ _________
1001 {'Jones'}
1002 {'James'}
1001 {'Robert'}
B =
3×2 table
code Type
____ _________
201 {'Car'}
201 {'Bus'}
203 {'Train'}
C = code Name Type
____ _________ _________
1001 {'Jones'} Nan
1002 {'James'} Nan
1001 {'Robert'} Nan
201 Nan {'Car'}
201 Nan {'Bus'}
203 Nan {'Train'}
0 Comments
Accepted Answer
the cyclist
on 3 Mar 2021
Edited: the cyclist
on 3 Mar 2021
A = table([1001; 1002; 1003],{'Jones';'James';'Robert'},...
'VariableNames',{'code','Name'});
B = table([201; 202; 203],{'Car'; 'Bus'; 'Train'},...
'VariableNames',{'code' 'Type'});
outerjoin(A,B,'MergeKeys',true)
Because the variables with missing values are character type, MATLAB will leave them as empty character arrays. (It would have used NaN for missing numeric variables.)
3 Comments
the cyclist
on 3 Mar 2021
Edited: the cyclist
on 3 Mar 2021
Ah, sorry. I assume you wanted to merge data. I believe that to simply concatenate them, you'll need to add the "missing" columns to each table. For example:
A = table([1001; 1002; 1003; 201],{'Jones';'James';'Robert';'Nancy'},...
'VariableNames',{'code','Name'});
B = table([201; 202; 203],{'Car'; 'Bus'; 'Train'},...
'VariableNames',{'code' 'Type'});
% Add new columns corresponding to the missing ones
A.Type = cell(size(A,1),1);
B.Name = cell(size(B,1),1);
C = [A; B]
I just did the laziest way I could think of to add "empty" data. You could do other things.
More Answers (0)
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!