Concatenate vertically multiple tables with different dimensions
조회 수: 22 (최근 30일)
이전 댓글 표시
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
채택된 답변
the cyclist
2021년 3월 3일
편집: the cyclist
2021년 3월 3일
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
the cyclist
2021년 3월 3일
편집: the cyclist
2021년 3월 3일
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Tables에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!