Sort column based on value in another column (sort rows by column values a>b>c)
4 views (last 30 days)
Show older comments
Nathan Garcia
on 11 Mar 2021
Commented: Nathan Garcia
on 1 Apr 2021
I am using the function [E,index] = sortrows(A,'descend');
This sorts the first column by row value and also secondarily sorts the second column. I would then like to specify how the sort works based on relative values in a third column. For example, I am only interested in rows where column A value > column B value > column C value. I am interested in the index that identifies the rows that fit this definition. How can I set this up?
0 Comments
Accepted Answer
Pranav Verma
on 15 Mar 2021
Edited: Pranav Verma
on 16 Mar 2021
Hi Nathan,
From the question I understand that after performing the usual sorting operation on the table, you want the rows which follow the definition of "value of column A > column B > column C".
You can start by sorting the rows in whichever order you want them to be sorted (ascending / descending). After that you can use the find function in MATLAB and get the row numbers which follow the definition provided.
For eg;,
% a = 3 2 1
% 2 3 4
% 5 4 3
% 1 2 3
a = [3 2 1 ; 2 3 4 ; 5 4 3 ; 1 2 3];
% value of column A > column B > column C
b = find(a(:,1) > a(:,2) & a(:,2) > a(:,3));
% b =
% 1
% 3
Here we see that row 1 and 3 follow the given condition specified inside the find function and hence it returns the row numbers of these two rows.
Hope this helps!
Thanks
More Answers (0)
See Also
Categories
Find more on Shifting and Sorting Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!