Recoder les valeurs de script pour plusieurs colonnes à l'aide d'un tableau associatif et d'une boucleBonjour, communauté d'utilisateurs JMP,
Très souvent, j'ai besoin de recoder des valeurs et j'aime utiliser un fichier avec des clés de mappage (en pièce jointe, help_med_code.jmp).
À partir de ces données de mappage, j'ai créé le tableau associatif et pour recoder les valeurs dans mon ensemble de données (help_data.jmp), je recode les valeurs pour chaque colonne.
Parfois, j'ai beaucoup de colonnes et l'utilisation de la boucle serait préférable.
Cependant, mon script pour la boucle ne fonctionne pas (ci-joint, help2.jsl).
S'il vous plaît, aidez-moi à utiliser le tableau associatif dans la boucle. D'autres suggestions de recodage seront également grandement appréciées.
J'espère que je n'ai pas fait de fautes de frappe stupides et que je n'ai pas répété la question si elle avait déjà été répondue ici.
Bien à vous tous,
Valentina
JMP® 16.2.0 (570548)
Microsoft Windows 10 Entreprise 64 bits (10.0.19044.0)
Automatisation et scriptFusion et nettoyage des donnéesRe : Script recode les valeurs pour plusieurs colonnes à l'aide d'un tableau associatif et d'une boucleComment construisez-vous votre mappage pour les noms de colonne ? Les colonnes d'origine sont-elles toujours au même format ? Je fais l'hypothèse dans mon exemple de script qu'ils le sont, donc ceux-ci peuvent être bouclés
Names Default To Here(1);
// this is original datatable
dt_data = Open("help_data.jmp");
// this is mapping file
dt_mapping = Open("help_med_code.jmp");
//The associative array
aa_mapping = Associative Array(:number, :med);
aa_mapping << Set Default Value("MISSING MAPPING INFO");
// build column name mapping
aa_colnames = Associative Array();
For Each({col_name}, dt_data << Get Column Names("Character", "String"),
If(Starts With(col_name, "med_"),
aa_colnames[col_name] = Substitute(col_name, "med_m", "drugname_");
)
);
For Each({{orig_col, new_col}}, aa_colnames,
dt_data << New Column(new_col, Character, Nominal, << Set Each Value(
aa_mapping[Column(dt_data, orig_col)[Row()]]
));
);Re : Script recode les valeurs pour plusieurs colonnes à l'aide d'un tableau associatif et d'une boucleMerci!
J'ai obtenu des données avec des étiquettes/dictionnaire pour les données.
Je suis content que le script fonctionne.