Bonjour les experts JSL,
J'ai un gros problème pour trouver la valeur du 2ème max, du 3ème max, etc. dans 1 colonne.
Pour un col ci-dessous, j'espère identifier les 5 premières valeurs maximales et marquer la valeur dans une colonne séparée.
Il semble que je ne trouve que le col max, mais j'ai beaucoup de difficulté à trouver le 2ème max, le 3ème max etc.
Existe-t-il une formule standard pour cette solution ?
Merci
(100,
232,
343,
121,
100,
132,
100,
100,
100,
100,)
Vous utilisez peut-être une ancienne version de JMP... cela fonctionne-t-il lorsque vous entrez manuellement la formule que j'ai montrée pour ce scénario ? Cela peut fonctionner pour vous - je ne me souviens pas quand le support par variable a été ajouté aux fonctions de colonne ... Je pense que c'était peut-être JMP 14 pour beaucoup d'entre eux.
Acclamations,
brady
Merci beaucoup.
Pour le cas 1, il semble que mon JMP n'ait pas de rang sous distributionnel, il n'a que les 6 premières options comme vous l'avez montré dans les images.
Colonne de formules > Distribution > Rang (ordre inverse).
Je pense que le cas 3 semble une meilleure solution pour mon problème actuel, merci de votre aide.
Salut,
Cela dépend de ce que vous entendez par "max", et si vous êtes prêt à trier le tableau. Je vais aborder quelques cas courants et j'espère que l'un d'entre eux couvrira votre cas d'utilisation.
Cas 1 : "max" signifie la position dans l'ensemble de données trié des valeurs d'origine, y compris les doublons.
Vous pouvez utiliser une transformation intégrée pour cela. Cliquez avec le bouton droit sur les données dans la colonne qui vous intéresse et sélectionnez Nouvelle colonne de formule > Distribution > Rang (ordre inverse).
En cliquant sur la formule qui est créée, nous avons ce qui suit, qui fonctionne que le tableau soit trié ou non :
(Col Number( :Col1 ) - Col Rank( :Col1 )) + 1

Cas 2 : "Max" signifie la position dans un ensemble trié de valeurs UNIQUES (pas de duplication). Refus de pré-trier les données.
***Remarque : en raison de sa dépendance aux tableaux associatifs, cette approche ne fonctionne qu'avec des données numériques impliquant des nombres entiers.
On peut utiliser la formule alambiquée (et coûteuse) :
Loc(
Matrix(
Reverse(
Associative Array( (:Col1 << get data table) :: col1 << getvalues ) << get keys
)
),
:Col1
)
Cette formule fait ce qui suit :
1) Obtient les valeurs de la colonne d'intérêt et les transmet à un tableau associatif, qui supprime les doublons.
2) Obtient les clés du tableau associatif (dans l'ordre de bas en haut par défaut) et inverse leur ordre.
3) Utilise la fonction Loc() pour signaler la position de la ligne donnée dans la matrice des clés de tableau associatif inversé.
Cas 3 : Comme dans le cas 2, mais nous sommes disposés à pré-trier (descendant) par la colonne d'intérêt.
Dans ce cas, nous pouvons utiliser une formule plus simple et plus efficace, quoique autoréférentielle :
If( Row() == 1,
1,
Lag( :Formula3 ) + (Lag( :Col1 ) != :Col1)
)
Ci-dessous, nous voyons la différence entre la première formule et les deux suivantes. Encore une fois, seule la 3ème formule dépend du tri des tables.

Si vous voulez essayer ceci, exécutez le script ci-dessous. Il apparaît d'abord non trié, mais après une pause d'une seconde, il trie par col1, auquel cas les résultats de la 3ème formule correspondront aux résultats de la seconde.
dt = New Table( "Example",
Add Rows( 20 ),
New Column( "Col1", <<SET values=""></SET>
Acclamations,
brady