使用關聯數組和循環對多列的腳本重新編碼值您好,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()]]
));
);回复:使用關聯數組和循環對多列的腳本重新編碼值謝謝你!
我將數據與數據的標籤/字典一起獲取。
我很高興劇本能發揮作用。