ColumnRank par groupe ?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour,
Existe-t-il un moyen de construire une formule équivalente à «ColumnRank by…» (groupe). J'utilise normalement la plate-forme de distribution (avec l'option « par groupe ») et j'enregistre les rangs à cet effet dans une colonne statique. Mais cette fois, j'ai besoin d'une colonne dynamique (calculée).
Merci,
Claude
Re : ColumnRank par groupe ?Salut tout le monde,
La fonction Col Rank prend désormais en charge les variables BY, comme cela était demandé à l'origine. Il semble que la prise en charge complète ait été ajoutée dans la période JMP 13, donc si vous utilisez cette version ou une version plus récente, vous devriez pouvoir le faire.
L'aide en ligne de JMP donne quelques détails supplémentaires et des options de départage :
https://www.jmp.com/support/help/en/15.1/#page/jmp/statistical-functions-2.shtml?os=win&source=application#ww2752649
Je sais que c'est un fil plus ancien, mais je voulais que cette information soit disponible pour quiconque pourrait la rechercher.
Salutations!
Audrey
Re : ColumnRank par groupe ?Merci Ron.
Enfin, j'ai choisi de modifier le script de mise à jour d'origine. C'est une procédure en 3 étapes :
- La première étape est la mise à jour d'origine (source de données ODBC) qui crée une nouvelle table (à cause des colonnes de code en dur) ;
- Ensuite, une deuxième étape de script met à jour ma table principale avec les données de cette nouvelle table ;
- La dernière étape consiste à fermer la nouvelle table.
De cette façon, je peux créer autant de nouvelles colonnes de code dur que nécessaire (le script n'aura besoin d'aucun correctif).
Claude
Re : ColumnRank par groupe ?salut claude.bellavance ,
s'il y a un problème avec une mise à jour, tout ce que vous avez à faire est de supprimer les colonnes codées en dur juste avant la mise à jour et de les réintroduire immédiatement après.
comme:
supprimer les colonnes codées en dur ;
mettre à jour;
recalculer les colonnes codées en dur ;
meilleur,
Ron
Re : ColumnRank par groupe ?Merci beaucoup Ron. C'est une manière ingénieuse de résoudre le problème.
Malheureusement, je ne peux pas utiliser de script car je dois passer par une colonne calculée. En fait, si j'ajoute des colonnes avec des données dures, la mise à jour de ma table avec ma base de données (via DNS/ODBC) créera une nouvelle table au lieu de simplement remplacer les données.
Claude
Re : ColumnRank par groupe ?salut claude.bellavance
Je suis également insatisfait de l'idée de " Les liens sont rompus arbitrairement" . il devrait au moins y avoir une option pour changer cela pour que les liens obtiennent le même rang comme cela se produirait dans une variable ordinale régulière.
J'ai une autre façon de "classer par" sans trier le tableau - dans mon cas, le tri est une nuisance. il donne des valeurs égales aux liens.
meilleur,
Ron
Noms par défaut ici ( 1 ) ;
// définit la source de données
dt = Ouvrir ( "$SAMPLE_DATA/Grande classe.jmp" ) ;
// ajoute une colonne pour le rang
dt << Nouvelle colonne ( "Rang" , numérique , ordinal ) ;
//// option 1 : Classement par colonne
// extrait la liste des niveaux par variable
par liste de variables = tableau associatif ( dt : âge ) << obtenir des clés ;
// créer des listes de classement séparées de la taille pour chaque groupe d'âge
pour ( ib = 1 , ib <= articles ( par liste de variables ) , ib ++,
eval ( analyser ( "liste de hauteur" || carboniser ( par liste de variables [ ib ]) || " = Tableau Associatif( " || carboniser ( dt : la taille [ dt << obtenir des lignes où ( : âge == par liste de variables [ ib ])]) || " ) << obtenir les clés" )) ;
) ;
pour ( je = 1 , je <= nrows ( dt ) , je ++,
: Rang [ je ] = eval ( analyser ( "loc( liste des hauteurs " || carboniser ( dt : âge [ je ] ) || " ," || carboniser ( dt : la taille [ je ]) || " ) " )) ;
) ;
// regarde si ça marche
dt << Trier (
Par ( : âge , : la taille ) ,
Ordre ( Ascendant , Ascendant )
) ;
////
//// Option 2 : Classement (sans colonne by)
// récupère les valeurs uniques de hauteur sous forme de liste
liste de hauteur = Tableau associatif ( dt : la taille ) << obtenir des clés ;
Pour ( je = 1 , je <= N lignes ( dt ) , je ++,
dt : Rang [ je ] = Loc ( liste de hauteur , : la taille [ je ] ) ;
) ;
// regarde si ça marche
dt << Trier (
Par ( : la taille ) ,
Ordre ( Ascendant )
) ;
Re : ColumnRank par groupe ?Salut Jerry,
Aucun problème. Je suis heureuse de voir qu'un jour mes souhaits se réaliseront !
Merci beaucoup encore.
Claude
Re : ColumnRank par groupe ?Désolé pour la confusion, je ne faisais apparemment pas attention à quelle version était active sur mon système lorsque je regardais cela. Par conséquent, vous avez obtenu un aperçu « non autorisé » des fonctionnalités prévues pour une « future » version de JMP.
Re : ColumnRank par groupe ?Salut MS,
Eh bien, c'est très intéressant solution de contournement. Il m'est ouvert un complètement nouvelle zone (Eval, Formule, etc.).
Je croise les doigts pour une future version de JMP avec cette nouvelle fonction "ColRank by…".
Merci beaucoup d'avoir pris le temps de répondre à ma question.
Claude
Re : ColumnRank par groupe ?Je crains que les arguments facultatifs pour Col Rank() ne soient pas pris en charge par la version actuelle de JMP.
Je n'ai pas de bonne solution de contournement qui fonctionnerait vraiment dynamiquement. La formule de colonne dans l'exemple ci-dessous devrait fonctionner, mais uniquement si la variable est triée au sein de groupes.
dt = Ouvrir ( "$SAMPLE_DATA/Grande classe.jmp" ) ;
dt << trier ( par ( : âge , masse ) , Remplacer le tableau ( 1 )) ;
F = Expr (
Éval ( Expr éval ( Numéro de colonne ( : masse , Ligne () <= Expr ( Ligne ()) , : âge )))
) ;
dt << Nouvelle colonne ( "Classement du poids selon l'âge" , numérique , formule ( Nom Expr ( F ))) ;
Re : ColumnRank par groupe ?Salut Jerry,
Pouvez-vous expliquer plus s'il vous plaît. Le manuel est très minimaliste sur ce troisième argument.
Rang de col
Classe la valeur de chaque ligne, de 1 pour la valeur la plus basse au nombre de non ‐ colonnes manquantes pour la valeur la plus élevée. Les liens sont rompus arbitrairement .
Je ne comprends pas ce que cela peut signifier et comment l'utiliser.
Merci de votre aide!
Claude
Re : ColumnRank par groupe ?Salut Claude,
La fonction Col Rank(column, ) fait ce que vous cherchez. La valeur par défaut pour briser les liens est l'ordre des lignes, mais il existe un troisième argument facultatif qui permet d'autres choix. J'espère que cela t'aides.
-Jerry