Comment utiliser une colonne pour « Ordre de valeur » une autre colonneChère communauté JMP,
Est-il possible d'utiliser les valeurs numériques (entiers) d'une colonne pour « ordonner les valeurs » d'une autre colonne ?
J'ai une colonne de texte que j'aimerais trier en fonction d'une autre colonne contenant des entiers. À titre d'exemple, j'ai une colonne appelée :Text et une autre appelée :Level.

Par défaut, JMP classe la propriété de colonne « Ordre des valeurs » comme suit :

Je préférerais qu'il soit ordonné comme ceci :

Ce qui, dans mon exemple simple, est le même ordre que la colonne :Level. Je peux bien sûr le faire manuellement, mais dans ma table de données réelle, j'ai une colonne de texte avec plusieurs dizaines d'entrées que je préférerais ne pas faire manuellement, mais plutôt utiliser la colonne :Level pour définir la propriété "Ordre des valeurs". de la colonne :Texte.
Existe-t-il un moyen de créer un script ou de le faire via une interface graphique dans JMP ?
Merci!,
DS
Modélisation statistique avancéeAutomatisation et scriptsPersonnalisation de masseRe : Comment utiliser une colonne pour « Ordre de valeur » une autre colonneLa solution ici consiste à utiliser un tableau associatif qui nécessite que vous disposiez de clés uniques. Donc, si vous avez des niveaux dupliqués, une partie du texte que vous avez sera "supprimé" (et ils seront classés par défaut, je suppose).
Re : Comment utiliser une colonne pour « Ordre de valeur » une autre colonneSalut !
J'essaie de trier une colonne (lots) par valeurs d'une colonne de date numérique, mais je rencontre un problème lorsque deux lots différents ont été fabriqués le même jour.
Par exemple, pourquoi cela ne serait-il pas ordonné correctement ?
dt = New Table("table",
Add Rows(10),
Compress File When Saved(1),
New Column("Text",
Character,
"Nominal",
Set Values({"A", "B", "C", "D", "E", "F", "AA", "BB", "CC", "DD", "EE", "FF"})
),
New Column("Level",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10])
)
);
L'ordre de la colonne de texte serait le suivant :
texte niveau
Un 1
B2
J 3
F4
AA5
BB6
CC7
DD8
EE 9
10 francs français
C2
E3
Au lieu de ce qui est souhaité :
texte niveau
Un 1
B2
C2
J 3
E3
F4
AA5
BB6
CC7
DD8
EE 9
10 francs français
C2
Re : Comment utiliser une colonne pour « Ordre de valeur » une autre colonneJe suis d'accord, @jthi la solution est la meilleure.Certaines personnes n'aiment pas JSL.Beaucoup de gens ne connaissent pas les niveaux d’ordre des lignes.Les utilisateurs d'Excel (un commentaire de généralisation est à venir) aimeraient avoir les niveaux d'ordre des lignes par défaut.C'est donc ma motivation pour répondre à votre excellente question de discussion.
Re : Comment utiliser une colonne pour « Ordre de valeur » une autre colonneBonjour, oui, je comprends maintenant pourquoi vous devez décocher la case de commande personnalisée. Ça a du sens. L'avantage de la façon dont jthi procède est que quel que soit le tri de la table de données, il conserve l'ordre des valeurs souhaité de la colonne :Text.Re : Comment utiliser une colonne pour « Ordre de valeur » une autre colonneJ'ai fait une erreur dans ma description de ce qu'il faut faire.Voici un exemple utilisant la table de données Big Class
- J'ai trié le tableau de données par hauteur

- Je suis ensuite allé dans la propriété de colonne pour la colonne Nom et j'ai sélectionné Niveaux d'ordre de ligne, ET j'ai désélectionné Ordre personnalisé.

- J'ai ensuite ouvert Graph Builder et fait glisser la colonne Nom vers l'axe X, et comme on peut le voir, l'ordre de l'axe X est l'ordre des lignes des noms.

Re : Comment utiliser une colonne pour « Ordre de valeur » une autre colonneSalut @jthi ,
Merci pour vos commentaires. Oui, ce code JSL est exactement ce dont j'ai besoin car il peut gérer toute disposition étrange des colonnes :Text et :Level, puis attribuer l'ordre des valeurs de manière appropriée.
Je n'ai pas beaucoup exploré ni travaillé avec la commande de tableau associatif, mais je dois clairement y réfléchir davantage ! Très sympa, seulement 3 lignes de code.
Merci!,
DS
Re : Comment utiliser une colonne pour « Ordre de valeur » une autre colonneSalut @txnelson ,
Merci pour vos commentaires. Malheureusement, cette solution ne fonctionne pas avec la colonne :Text. Si je trie le tableau en fonction de la colonne :Level, puis que j'applique les "Niveaux d'ordre des lignes" comme vous le suggérez pour l'ordre des valeurs de la colonne :Text, il conserve toujours l'ordre alpha de la colonne :Text, ce qui signifie que AA vient toujours après A et ainsi de suite.
L'autre "problème" est qu'il gâche les lignes de la table de données d'origine, qui sont actuellement triées par date. Les colonnes :Text et :Level peuvent être dispersées à travers les dates et il est parfois utile de conserver le tableau trié par date. Ce n'est pas vraiment un gros problème, mais je sais que les autres utilisateurs qui accéderaient alors à la table de données ne l'apprécieront pas.
Merci!,
DS
Re : Comment utiliser une colonne pour "Ordre de valeur" une autre colonneSalut @ron_horne ,
Merci pour vos commentaires. Je connais cette méthode pour créer un tracé de type Pareto dans Graph Builder ; Je l'ai utilisé plusieurs fois et c'est très utile. Malheureusement, je fais beaucoup d'autres évaluations avec le tableau de données que la simple visualisation des données, il serait donc utile d'avoir une solution portable et évolutive pour des tableaux comportant des milliers de lignes et plusieurs dizaines d'options de texte. Je n'ai pas encore essayé les deux autres méthodes, mais je vais les essayer.
Merci!,
DS
Re : Comment utiliser une colonne pour « Ordre de valeur » une autre colonneLes deux @jthi et @ron_horne proposer de belles solutions.Mais si vous voulez simplement une manière interactive de le faire, tout ce que vous avez à faire est
- classez le tableau de données par la colonne par laquelle vous souhaitez que les données soient classées
- Accédez à la propriété de colonne de classement des valeurs pour la colonne que vous souhaitez utiliser pour le classement et sélectionnez "Niveaux d'ordre des lignes".

Désormais, lorsque vous utilisez la colonne que vous avez spécifiée Niveaux d'ordre des lignes comme colonne de tri, elle utilisera l'ordre dans la table de données pour cette colonne comme ordre d'affichage des résultats.
Re : Comment utiliser une colonne pour « Ordre de valeur » une autre colonneSalut @SDF1
Si tout ce dont vous avez besoin est de l'utiliser dans le générateur de graphiques, vous pouvez trier n'importe quel axe par l'autre comme sur l'image. vous pouvez même modifier les statistiques du classement. cela ne vous aidera pas si vous souhaitez commander des tests ou une utilisation sur d'autres plates-formes d'analyse ou graphiques.

ce que je fais dans la plupart des cas, c'est produire un résumé de tableau par l'autre variable et le trier. à partir de là, je copie et colle les catégories directement dans l'ordre des valeurs. C'est un hack que tout le monde ne connaît pas mais qui fonctionne.
Ron
Re : Comment utiliser une colonne pour "Ordre de valeur" une autre colonneJe ne sais pas si c'est possible avec l'interface graphique mais vous pouvez le scripter en quelques étapes :
- Obtenez d’abord une colonne de texte correctement ordonnée dans la liste
- Ajouter une propriété de colonne à la colonne Texte avec la liste précédente
Vous trouverez ci-dessous une solution possible qui devrait fonctionner au moins avec l'exemple actuel (ouvrez la fenêtre Journal pour voir les impressions "debug") :
Names Default To Here(1);
dt = New Table("table",
Add Rows(10),
Compress File When Saved(1),
New Column("Text",
Character,
"Nominal",
Set Values({"A", "B", "C", "D", "E", "F", "AA", "BB", "CC", "DD"})
),
New Column("Level",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
)
);
//get values from Level and Text into Associative Array
aA_level_text = AssociativeArray(Column(dt, "Level") << Get Values,Column(dt, "Text") << Get Values);
show(aA_level_text); //debug
ordered_level = aA_level_text << Get Values; //Get values (will be ordered by Level)
Show(ordered_level); //debug
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debug
//Add Value Ordering Column Property to Text column
Eval(Eval Expr(
Column(dt, "Text") << Set Property("Value Ordering", Expr(ordered_level));
));
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debug
dt << Clear Column Selection;
Re : Comment utiliser une colonne pour "Ordre de valeur" une autre colonneOK, je vais essayer
Re : Comment utiliser une colonne pour "Ordre de valeur" une autre colonneUtiliser Ranking() pour "réorganiser" pourrait fonctionner dans votre cas
Names Default To Here(1);
dt = New Table("table",
Add Rows(10),
Compress File When Saved(1),
New Column("Text", Character, "Nominal", Set Values({"FF", "B", "C", "D", "E", "F", "AA", "BB", "CC", "DD", "EE", "A"})),
New Column("Level", Numeric, "Continuous", Format("Best", 12), Set Values([10, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 1]))
);
m_text = Column(dt, "Text") << get values;
m_level = Column(dt, "Level") << get values;
orders = Ranking(m_level);
m_text[orders];
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debug
Eval(Eval Expr(Column(dt, "Text") << Set Property("Value Ordering", Expr(m_text[orders]))));
Show(Column(dt, "Text") << Get Property("Value Ordering")); //debugRe : Comment utiliser une colonne pour « Ordre de valeur » une autre colonneÇa a marché! Merci beaucoup jthi !
Re : Comment utiliser une colonne pour trier une autre colonne par valeurÉtrange que la colonne ordinale « âge » ne soit pas sélectionnable dans le menu contextuel. Une idée de la raison ?
Re : Comment utiliser une colonne pour trier une autre colonne par valeurArticles similaires proposant des solutions élégantes :
Définir l'ordre ou l'étiquette des valeurs en fonction d'une autre colonne via un tableau associatif
https://community.jmp.com/t5/Discussions/how-to-sort-x-axis-by-another-column-value/mp/442639#M69092 :
Résumé + Index de classement
Re : Comment utiliser une colonne pour trier une autre colonne par valeurVous pouvez le faire dans les versions plus récentes de JMP, car elles proposent l'option « Autre » qui vous permet de choisir une colonne.