Sort Matlab table based on pre-defined order

조회 수: 51 (최근 30일)
Metin Akyol
Metin Akyol 2022년 1월 31일
댓글: Metin Akyol 2022년 1월 31일
I would like to sort a table based on a column that only contains 4 string values (A, B, C, and d) in an specific order that is not alphabetic.
This is what I am currently using:
sortrows(table_1,{'col1','col2'},{'ascend' 'descend'})
For col2 I would like to use a custom order that is neither ascend nor descend. So for instance the sorting order should be:
B
A
C
D

채택된 답변

Stephen23
Stephen23 2022년 1월 31일
편집: Stephen23 2022년 1월 31일
You could do something like this, where C is that column:
D = {'B';'A';'C';'D'}; % the desired order
C = {'C';'C';'A';'D';'B';'C';'A';'D';'B'} % the column to sort
C = 9×1 cell array
{'C'} {'C'} {'A'} {'D'} {'B'} {'C'} {'A'} {'D'} {'B'}
[X,Y] = ismember(C,D);
[~,Z] = sort(Y);
D = C(Z) % of course you would sort the table e.g. T(Z,:)
D = 9×1 cell array
{'B'} {'B'} {'A'} {'A'} {'C'} {'C'} {'C'} {'D'} {'D'}

추가 답변 (1개)

Turlough Hughes
Turlough Hughes 2022년 1월 31일
Try the following:
idx = [2 1 3 4];
T(idx,:) = T

카테고리

Help CenterFile Exchange에서 Shifting and Sorting Matrices에 대해 자세히 알아보기

태그

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by