COMBINING MULTIPLE TABLES TOGETHER

22 ビュー (過去 30 日間)
RUSSELL KHAJURIA
RUSSELL KHAJURIA 2018 年 10 月 9 日
編集済み: Stephen23 2018 年 10 月 11 日
I am working with a .mat file that has 100 tables (with different names) attached to it. I want to combine all those tables into a new single table without using individual names. Please help
  4 件のコメント
RUSSELL KHAJURIA
RUSSELL KHAJURIA 2018 年 10 月 11 日
yes widths are the same and I wont attach the .mat file. I have used the eval function to do the job but I want to do it without eval function??
KSSV
KSSV 2018 年 10 月 11 日
I wont attach the .mat file why you don't attach a file, when you are asking a question in the forum?

サインインしてコメントする。

回答 (2 件)

KSSV
KSSV 2018 年 10 月 11 日
Type = {'Autostable' ; 'Auto' } ;
Status = { 'Success' ; 'Failure'} ;
Rank = [23 56 ]' ;
T1 = table(Type,Status,Rank) ;
Type = {'Manual' ; 'Manual' ; 'Manual' ; 'Reinitiate' } ;
Status = {'Failure' ; 'Disconnect' ;'Success' ; 'Success'} ;
Rank = [12 45 45 42]' ;
T2 = table(Type,Status,Rank) ;
T = [T1 ; T2]
% Use cat
T = cat(1,T1,T2)

Stephen23
Stephen23 2018 年 10 月 11 日
編集済み: Stephen23 2018 年 10 月 11 日
"I have used the eval function to do the job but I want to do it without eval function??"
That is a good idea, because eval makes code slow, complex, and buggy. Read this to know why:
First import the .mat file into a structure:
S = load(...);
Then you have a choice: either loop over its fieldnames and use dynamic fiekdname to access each table:
N = fieldnames(S);
N = natsort(N); % download from FEX
C = cell(size(N));
for k = 1:numel(N)
C{k} = S.(N{k});
end
T = vertcat(C{:}); % or whatever way you want to join the tables.
or use struct2cell and a simple concatenation:
C = struct2cell(S);
T = vertcat(C{:});
If you want to use innerjoin (or similar) on multiple tables then you will need to use a loop.

カテゴリ

Help Center および File ExchangeTables についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by