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

23 visualizzazioni (ultimi 30 giorni)
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 ;

Risposta accettata

Azzi Abdelmalek
Azzi Abdelmalek il 17 Giu 2016
Modificato: Azzi Abdelmalek il 17 Giu 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 Commenti
Guillaume
Guillaume il 17 Giu 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!

Accedi per commentare.

Più risposte (1)

Shameer Parmar
Shameer Parmar il 17 Giu 2016
Modificato: Shameer Parmar il 17 Giu 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 Commenti
Guillaume
Guillaume il 17 Giu 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 il 17 Giu 2016
thanks for your quick answer and recommendation is appreciated :)

Accedi per commentare.

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by