How to sort or rearrange a column with respect to the other column?!

22 views (last 30 days)
Hello Everybody;
wish you are all doing well;
if i have a data of two columns and i want to sort one of the columns in a descending order and also keep the other column fixed and likened with the changed one, how can i do that?! assuming that column 1 is the ID of column two
sample data:
241 5
1245 4
684 4
806 4
674 3
Appreciating your help ;

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 17 Jun 2016
Edited: Azzi Abdelmalek on 17 Jun 2016
Use sortrows function. For example
A=[241 5;1245 4;684 4;806 4;674 3]
B=sortrows(A,2)
% Or by descending order
B=sortrows(A,-2)
  5 Comments
Guillaume
Guillaume on 17 Jun 2016
Please, read the documentation of sortrows. You can sort according to whichever column and whichever direction you wish.
The documentation contains lots of useful information!

Sign in to comment.

More Answers (1)

Shameer Parmar
Shameer Parmar on 17 Jun 2016
Edited: Shameer Parmar on 17 Jun 2016
Hello Mariam,
For your given sample data:
A =
241 5
1245 4
684 4
806 4
674 3
use following code:
A = [241, 5; 1245, 4; 684, 4; 806, 4; 674, 3];
B(:,1) = sort(A(:,1),'descend');
for i=1:length(A)
B(i,2)=A(find(ismember(A(:,1),B(i))),2);
end
B
OutPut will be like in '*descending*' order
B =
1245 4
806 4
684 4
674 3
241 5
  3 Comments
Guillaume
Guillaume on 17 Jun 2016
Both sortrows and sort allows you to specify the direction. I recommend using sortrows as it's more suited to what you want.
If you were to use sort, I would use the 2nd return value to reorder the other columns rather than a loop and ismember:
[B(:, 1), order] = sort(A(:, 1), 'descend');
B(:, 2) = A(order, 2);
As said, sortrows as per Azzi's answer is better.
Mariam Sheha
Mariam Sheha on 17 Jun 2016
thanks for your quick answer and recommendation is appreciated :)

Sign in to comment.

Products

Community Treasure Hunt

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

Start Hunting!