nouvelle colonne : classement uniqueSalut,
Je souhaite créer une colonne avec les valeurs 1,2,3 - N pour étiqueter les valeurs uniques dans une autre colonne.
Dans la communauté, il existe plusieurs posts similaires
Comment créer une nouvelle colonne avec un numéro numérique basé sur le regroupement unique de la colonne A
Rang unique
avec diverses solutions.
Mais la seule solution intéressante que je n'ai pas trouvée jusqu'à présent.
Ça devrait être
- dynamique (réagir aux changements dans le tableau) -> pas de tableaux/Résumé, pas d'étiquette à coder
- indépendant du type de colonne (au moins : Caractère + Numérique) -> pas de Label à coder
- fonctionnel même pour les tables non triées -> pas de décalage
- rapide -> pas de tableau associatif
Le mieux : une fonction courte comme (*)
rank unique(:col1)
ou une option d'une fonction (**)
rank(:col1, << unique(1))
j'ai trouvé l'option
rank(:col1, << tie(mode))
mais je n'ai pas trouvé de mode qui produit les numéro 1, 2,3... N
Je pensais qu'on pouvait y arriver en utilisant rang deux fois:
New Column( "step1",Formula( Col Rank( :sex, <<TIE></TIE>
Mais step2 connaît certains secrets sur la colonne step1 que l'utilisateur ne peut pas voir :

Ce qui fonctionne:
New Column( "Rank[sex]",
Formula(
If(row() == 1,summarize(values= by(:sex)));
Contains( values, :sex )
)
);
Je recherche toujours (*) ou (**) et j'espère pouvoir le trouver dans le menu contextuel de la colonne Nouvelle formule. Mais où?
Mélange et nettoyage des donnéesRe : nouvelle colonne : classement uniqueAucune fonction Col ne peut effectuer cette tâche. Vous pouvez le faire avec les fonctions Col, mais cela en nécessitera probablement peu et sera plus lent que l'utilisation de Summarize (ou Associative Array). Ajouter un classement dense aux fonctions Ranking Tie et Col Rank
Re : nouvelle colonne : classement uniqueDommage pour les entrées de la liste de souhaits - il y en a tellement de bonnes - mais elles restent inaperçues.
Comment aurais-je pu rater celui-là…
-> Bravo de ma part.
Re : nouvelle colonne : classement uniqueLa recherche n'est pas la meilleure de la communauté JMP, j'aurais donc dû ajouter plus de « mots-clés » au titre, comme le classement unique. C'est un problème auquel je suis confronté de temps en temps au travail, mais heureusement (du moins pas encore...) soit la vitesse de calcul n'est pas un problème, soit je n'ai pas besoin de formule dynamique.
Re : nouvelle colonne : classement uniquerecherche : Merci pour votre message sur nous dans la communauté.
Depuis, je suis votre suggestion et j'utilise toujours la recherche Google - j'ai même ajouté un raccourci à mon navigateur.
Dans le passé, une bonne approche consistait à envoyer un message à la communauté, puis à l'ouvrir et à regarder les suggestions de "posts associés" sur la droite - mais depuis la mise à jour de la mise en page de la communauté, je ne retrouve plus cette fonctionnalité.
Une jolie application pour Rank unique :
Dans Graph Builder, lorsque je place des tranches dans la zone de dépôt du groupe X et des variantes dans la zone de dépôt du groupe Y, s'il n'y a pas de DOE et que chaque tranche n'a qu'une seule variante, j'obtiens un tracé très clairsemé avec beaucoup de zone blanche.
Ensuite c'est cool d'avoir le rang 1,2,3... pour la drop zone du Groupe X et les infos sur la plaquette juste via le label Hover.
Il n'est pas vraiment essentiel d'avoir la version dynamique - mais j'ai un meilleur sentiment si les valeurs s'ajustent automatiquement après une mise à jour de la table - de sorte qu'il soit garanti qu'il n'y a pas d'anciennes valeurs.
Les tableaux associatifs deviennent déjà très lents pour une longueur de données décente. vraiment dangereux si vous n'avez pas sauvegardé vos données...
Re : nouvelle colonne : classement uniqueHm, toujours pareil dans Jmp 18 :

Suite à une idée de @jthi de Add Counter for Unique Cases in Groups :
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "rank_unique (sex) by age",
Formula(
Col Minimum(
Col Rank( If( Row() == Col Min( Row(), :age, :sex ), 1 ), :age ),
:age,
:sex
)
)
)
- juste une valeur pour le premier de chaque sexe X âge
- générer un classement
- utilisez Col Minimum pour diffuser les valeurs vers les autres lignes