Sort a table with different orders for different columns

11 ビュー (過去 30 日間)
Karol Buchajczuk
Karol Buchajczuk 2021 年 3 月 31 日
コメント済み: Karol Buchajczuk 2021 年 3 月 31 日
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 件のコメント
Karol Buchajczuk
Karol Buchajczuk 2021 年 3 月 31 日
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 2021 年 3 月 31 日
It would likely be necessary to sort each column independently, then concatenate the results into a new matrix.

サインインしてコメントする。

採用された回答

Stephen23
Stephen23 2021 年 3 月 31 日
Where T is your table:
sortrows(T,[1,2,-3])
  1 件のコメント
Karol Buchajczuk
Karol Buchajczuk 2021 年 3 月 31 日
Just what I wanted to do, thank you very much!

サインインしてコメントする。

その他の回答 (1 件)

David Hill
David Hill 2021 年 3 月 31 日
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 件のコメント
Karol Buchajczuk
Karol Buchajczuk 2021 年 3 月 31 日
I'm sorry, it is actually a table, not a matrix. I've corrected my question accordingly.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeShifting 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