Incrémenter par niveaux de colonne de caractères (scripting)Peut-être que je ne vois plus le bois avant les arbres ; Je veux juste appliquer un incrément numérique pour chaque niveau distinct d'une colonne de caractères.
Les mêmes niveaux obtiennent le même incrément, différents niveaux obtiennent des nombres différents.
Hypothèse : les données sont triées par "Character_Column_Have". "Numeric_Increment_Want" doit commencer par 1.
Character_Column_Have Numeric_Increment_Want
AAA 1
AAA 1
ABC 2
BBB 3
CCD 4
EEE 5
EEE 5 ...
Le seul résultat que j'ai obtenu jusqu'à présent a été de faire planter mon JMP à plusieurs reprises en utilisant "col **bip** rang".
JMP et moi pourrions faire mieux, non ?
Merci pour chaque pointeur !
Débutant
Re : Incrémenter par niveaux de colonne de caractères (script) New Column( "Increment",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
If( Row() == 1,
Summarize( myGroups = by( :Period ) )
);
Contains( myGroups, :Period );
)
);
Je ne peux pas expliquer pourquoi cela fonctionne maintenant. J'ai aussi ajusté pour "Groupes". Bizarre. Quoi qu'il en soit, je l'ai résolu comme ça et ça marche comme un charme. Jim, merci beaucoup. De nouveau!
Re : Incrémenter par niveaux de colonne de caractères (script)Voici la formule pour la colonne Numeric_Increment_Want
If( Row() == 1,
Summarize( myGroups = by( :Period ) )
);
Contains( myGroups, :Period );
J'ai dû modifier le code précédent car la référence à "Groups" dans l'ancien code est en conflit avec la table de données Dolphins ayant une colonne nommée Groups.J'ai donc changé le nom de la variable en myGroups.

Ci-joint le tableau de données avec la nouvelle colonne ajoutée
Re : Incrémenter par niveaux de colonne de caractères (script)J'ai essayé toutes vos approches mais il semble que je n'arrive pas à les faire fonctionner.
Une approche m'intrigue conceptuellement. Il adresse deux colonnes d'entrée, tandis que seule la colonne de caractères est disponible pour l'entrée.
Pourriez-vous démontrer une approche sur l'ensemble de données JMP "Dolphins" s'il vous plaît (extrait ci-dessous) ?
Voyage Matin 6
Nourrir le matin 28
... Voyage Soirée 13
Nourrir le soir 56
Soirée Sociale 10
Pour les niveaux "Dauphins" Matin, Midi, Après-midi, Soir je m'attendrais aux incréments 1,2,3 resp. 4 (sous réserve d'ordre de tri)
Re : Incrémenter par niveaux de colonne de caractères (script)J'aime la réponse de Jim. Vous pouvez également utiliser une formule simple :
If(
Row() == 1, 1,
:Have == Lag( :Have ), Lag( :Want ),
Lag( :Want ) + 1
)
Ou le script équivalent :
For Each Row( If( Row() == 1, 1, :Have == Lag( :Have ), Lag( :Want ), Lag( :Want ) + 1 ) );
Re : Incrémenter par niveaux de colonne de caractères (script)Voici la formule que j'utiliserais
If( Row() == 1,
Summarize( groups = by( :Character_Column_Have ) )
);
Contains( groups, :Character_Column_Have );
Il existe également d'autres méthodes.
- Utilisez Recode pour créer une nouvelle colonne, en modifiant les valeurs trouvées pour les nouvelles valeurs numériques souhaitées
- Utilisez la plate-forme de synthèse avec Character_Column_Have comme colonne de groupe pour créer une nouvelle table de données avec une ligne par valeur de Character_Column_Have.Créez ensuite une nouvelle colonne contenant la formule Row().Enfin, utilisez la plate-forme de mise à jour pour joindre le tableau récapitulatif au tableau d'origine.