Sort Matlab table based on pre-defined order

48 vues (au cours des 30 derniers jours)
Metin Akyol
Metin Akyol le 31 Jan 2022
Commenté : Metin Akyol le 31 Jan 2022
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

Réponse acceptée

Stephen23
Stephen23 le 31 Jan 2022
Modifié(e) : Stephen23 le 31 Jan 2022
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 commentaire
Metin Akyol
Metin Akyol le 31 Jan 2022
Thank you, worked very well.

Connectez-vous pour commenter.

Plus de réponses (1)

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

Catégories

En savoir plus sur Shifting and Sorting Matrices dans Help Center et File Exchange

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by