連想配列とループを使用して複数の列の値をスクリプトで再コード化するJMP ユーザーコミュニティの皆さん、こんにちは。
値を再コーディングする必要があることがよくあり、マッピング キーを含むファイル (添付の help_med_code.jmp) を使用するのが好きです。
このマッピング データから連想配列を作成し、データセット (help_data.jmp) 内の値を再コード化するために、各列の値を再コード化します。
列がたくさんある場合は、ループを使用する方が望ましい場合があります。
ただし、ループのスクリプトは機能しません (添付の help2.jsl)。
ループ内での連想配列の使用にご協力ください。 再コーディングに関するその他の提案も大歓迎です。
愚かなタイプミスをしたり、すでにここで回答されている質問を繰り返さなかったことを願っています。
皆さんにとって最高です。
ヴァレンティナ
JMP® 16.2.0 (570548)
Microsoft Windows 10 Enterprise 64 ビット (10.0.19044.0)
自動化とスクリプト作成データのブレンディングとクリーンアップRe: 連想配列とループを使用して複数の列の値を再コード化するスクリプト列名のマッピングをどのように構築しますか? 元の列は常に同じ形式ですか? 私のサンプル スクリプトでは、それらがそうであると仮定しているので、これらをループすることができます。
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: 連想配列とループを使用して複数の列の値を再コード化するスクリプトありがとう!
データのラベル/辞書とともにデータを取得しました。
脚本が機能して嬉しいです。