MATLAB Answers


How to reorder a matlab table based on a portion of variables name

Asked by Robert
on 22 May 2018
Latest activity Commented on by Robert
on 23 May 2018
Wondering if anyone knows how to reorder a Matlab table based on a portion of variables name (numerical ID within the variables name) when having a table with hundreds of columns (variables)
Example of table variables name:
America_1010 America_1008 America_1001 America_1808 ...
After reorder:
America_1001 America_1008 America_1010 America_1808 ...
Thank you in advance!


Sign in to comment.

2 Answers

Sean de Wolski 님의 답변 22 May 2018
 채택된 답변

Doing it manually,
T = array2table(1:4,'VariableNames', {'America_1010', 'America_1008', 'America_1001', 'America_1808'}) % example table
numeric_string = regexp(string(T.Properties.VariableNames), '(\d*)', 'tokens'); % grab numeric part
numeric_value = cellfun(@(x)double(x{1}), numeric_string); % convert to double
[~, idx] = sort(numeric_value); % sort
T2 = T(:,idx) % reorder
But I'd recommend Stephen's natural sorting utilities as a way to skip sorting yourself:

  1 Comment

Thank you so much to both of you for your suggestions and links. Your solutions work great!

Sign in to comment.