使用关联数组和循环对多列的脚本重新编码值您好,JMP 用户社区,
我经常需要重新编码值,并且喜欢使用带有映射键的文件(附件,help_med_code.jmp)。
根据此映射数据,我创建了关联数组,并重新编码了数据集 (help_data.jmp) 中的值,我为每列重新编码了值。
有时我有很多列,使用循环会更好。
但是,我的 for 循环脚本不起作用(附件,help2.jsl)。
请帮助在循环中使用关联数组。 其他重新编码的建议也将不胜感激。
我希望我没有犯任何愚蠢的打字错误,并且如果已经在这里回答了这个问题,也不会重复这个问题。
祝大家一切顺利,
瓦伦蒂娜
JMP® 16.2.0 (570548)
Microsoft Windows 10 企业版 64 位 (10.0.19044.0)
自动化和脚本编写数据混合和清理回复:使用关联数组和循环对多列的脚本重新编码值如何构建列名称的映射? 原始列是否始终采用相同的格式? 我在示例脚本中假设它们是,因此可以循环它们
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()]]
));
);回复:使用关联数组和循环对多列的脚本重新编码值谢谢你!
我将数据与数据的标签/字典一起获取。
我很高兴剧本能发挥作用。