Sort a table with different orders for different columns

11 vues (au cours des 30 derniers jours)
Karol Buchajczuk
Karol Buchajczuk le 31 Mar 2021
Assume table A:
A = [
'k' 2 4
'a' 3 8
'a' 4 5
'k' 2 2
'a' 3 16
'k' 9 3
'k' 9 8
'a' 4 6
]
If i use sortrows(A) every column is sorted with ascending order:
A = [
'a' 3 8
'a' 3 16
'a' 4 5
'a' 4 6
'k' 2 2
'k' 2 4
'k' 9 3
'k' 9 8
]
Is there a way to sort rows, so first and second column is sorted with ascending order, but third one with descending? I want to get something like this:
A = [
'a' 3 16
'a' 3 8
'a' 4 6
'a' 4 5
'k' 2 4
'k' 2 2
'k' 9 8
'k' 9 3
]
  3 commentaires
Karol Buchajczuk
Karol Buchajczuk le 31 Mar 2021
I want to sort by first column in ascending order, then second in ascending order, then third in descending, so like in example, sortrows is sorting first column, so 'a's are before the 'k's, then for every 'a' it sorts second column, so 'a' 3 is before 'a' 4 etc. My problem is sortrows sorts it by (asc,asc,asc) and I want it sorted by (asc,asc,desc).
Star Strider
Star Strider le 31 Mar 2021
It would likely be necessary to sort each column independently, then concatenate the results into a new matrix.

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 31 Mar 2021
Where T is your table:
sortrows(T,[1,2,-3])
  1 commentaire
Karol Buchajczuk
Karol Buchajczuk le 31 Mar 2021
Just what I wanted to do, thank you very much!

Connectez-vous pour commenter.

Plus de réponses (1)

David Hill
David Hill le 31 Mar 2021
You can't have a matrix with characters and numbers. But if you convert the characters to double, then:
A=[sort(A(:,1)),sort(A(:,2)),sort(A(:,3),'descend')];
  1 commentaire
Karol Buchajczuk
Karol Buchajczuk le 31 Mar 2021
I'm sorry, it is actually a table, not a matrix. I've corrected my question accordingly.

Connectez-vous pour commenter.

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