Reorganise table by label name

Hi everyone,
I've multiple tables imported from excel where they are organized one for sheet. They include observation for countries at different times (sheet1=1-st year, sheet2 = 2-nd year,...). I'm trying to reorder them by their table labels (country name).
Can you help me? Thanks.

Answers (1)

Here is how to use sortrows() to reorder a table by the country names column:
% Sort table alphanumerically by the first column (the table with the country rows in it).
t = sortrows(t, 1)
Here is a full demo, which includes creating some data and then sorting it:
% No data was included in the question, so we are forced to create some on our own.
for row = 1 : 15
countries{row} = sprintf('Country %02d', randi(99, 1, 1));
data(row) = rand(1);
end
% Make a table from these two row vectors. Use (:) to turn them into column vectors, then use table().
t = table(countries(:), data(:), 'VariableNames', {'Country', 'Data'})
% Now we have the sample data with country names in random order, and we can begin.
% Sort table alphanumerically by the first column (the table with the country rows in it).
t = sortrows(t, 1)

3 Comments

Thanks a lot for your answer, your code's really interesting, but I think that my quest it's distorted a little bit. Any my sheets present the country "X" in the same column by the different sheets, I don't want to reorganize them, I want to pick for any country the observation in sheet 1, in sheet 2,... and create a new table (or a storage instrument) for any country.
Thanks again.
Well, unless you can upload these multiple tables, or workbook with multiple sheets in it (ideally with code to read in all the sheets), you're making a lot harder for me. I think I'll just wait for the data, along with what you want as the output.
Thanks, I think that I've solved my problem.
for c=1:width(CDS_1Y)
SpreadCurves{:,c}=[CDS_1Y(t,c);CDS_2Y(t,c);CDS_3Y(t,c);CDS_4Y(t,c);CDS_5Y(t,c);CDS_7Y(t,c);CDS_10Y(t,c);CDS_20Y(t,c);CDS_30Y(t,c)];
end
% "c" is the label (country) founder "t" is another parameter. "CDS_*" are originally tables names.
%% With this code you can pick the column for the same label from multiple tables and recombine these in a table for any label.

Sign in to comment.

Products

Release

R2020a

Asked:

on 12 Apr 2020

Edited:

on 12 Apr 2020

Community Treasure Hunt

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

Start Hunting!