Trier une matriceTous,
Existe-t-il un moyen d'obtenir une fonctionnalité similaire à celle illustrée ci-dessous :
A = [10 -12 4 8; 6 -9 8 0; 2 3 11 -2; 1 1 9 3]
Lors du tri, comment puis-je conserver les positions d'origine des éléments ?
Par exemple, si je voulais trier chaque colonne de la matrice, je ne peux penser qu'à faire ce qui suit :
for(i = 1, i <= N cols(A), i ++,
t = A[0,i];
t1 = sort descending(t);
);Maintenant, comment puis-je déterminer la position d'origine des éléments et les conserver ?
https://www.mathworks.com/help/matlab/ref/sort.html - Dans Matlab, il y a un deuxième argument à la fonction de tri qui renvoie l'index
De même dans R, vous pouvez conserver l'index. Vous vous demandez quelle est la meilleure façon de le faire dans JMP ?
Re : Trier une matrice@Mark_Bailey ,
Merci. Je soumettrai une demande à la liste de souhaits pour fournir une fonction prédéfinie pour cela.J'espère qu'à l'avenir, JMP trouvera un moyen de ne pas avoir à parcourir la matrice. J'aimerais voir la famille de fonctions apply() de R introduite dans JMP.
Re : Trier une matriceCette adaptation devrait fonctionner :
A = [10 -12 4 8; 6 -9 8 0; 2 3 11 -2; 1 1 9 3];
sort matrix = Function( { m }, { t, b=[], i=[] },
For( j = 1, j <= N Cols( m ), j++,
t = A[0,j];
b ||= Sort Descending( t );
i ||= Matrix( Reverse( As List( Rank Index( t ) ) ) );
);
Eval List( { b, i } );
);
{ B, I } = sort matrix( A );
Show( A, B, I );
Re : Trier une matrice@Mark_Bailey & @txnelson ,
Je comprends qu'il vous semble évident que Rank() fait ce que je veux, cependant, voici un exemple de pourquoi je demande:
Dans Matlab, voici ce qui se passe lorsque vous essayez de trier une matrice. Toutes mes excuses pour avoir extrait cet exemple d'une plate-forme différente, j'ai essayé d'éviter de le faire, mais je ne vois pas de meilleure façon d'expliquer ce que je recherche. Donc, si vous regardez les valeurs de "I", il conserve les indices

Maintenant, si je voulais faire exactement la même chose dans JMP , est-ce la voie que vous me recommandez de prendre, oui, cela ne me donne pas le même résultat. De plus, j'apprécierais de ne pas avoir à utiliser une boucle pour quelque chose comme ça
A = [10 -12 4 8; 6 -9 8 0; 2 3 11 -2; 1 1 9 3];
for(i = 1 , i <= N Cols(A), i++,
t = A[0,i];
t1 = Sort Descending(t);
ranks = Rank(t);
);
Re : Trier une matriceEuh, c'est le peu de classement...
Re : Trier une matrice@txnelson ,
Je crois que vous faites référence au contenu qui est également couvert ici - https://www.jmp.com/support/help/14/ranking-and-sorting.shtml . Cependant, cela ne s'étend pas à la capture des indices que je recherche lors de l'exécution du tri. J'espère que quelque chose ne me manque pas.
Re : Trier une matriceJetez un œil à "Ranking and Sorting" dans la section "Data Structures, Matrices" du Scripting Guide