(symput/symgetを呼び出す)マクロ変数に基づいて繰り返しrecodeの変数にループをかけ、私はDATA1それを呼び出すするつもりです:私がしたい私はこのようになりますデータセットを持って
dv = 1のときのss、out1およびout2変数の値を、dv = 0のときに各 "var"グループ内の値に再コード化します。私が欲しい結果データセットは次のようになり、のはDATA2を呼び出してみましょう:
私は、次のコード使用して結果を得ることができた:より多くがあった場合、私は思っていた
data _null_;
set data1;
if dv=0 then do;
if var=0 then call symput("out1_0",out1);
if var=0 then call symput("out2_0",out2);
if var=0 then call symput("ss_0",ss);
if var=1 then call symput("out1_1",out1);
if var=1 then call symput("out2_1",out2);
if var=1 then call symput("ss_1",ss);
if var=2 then call symput("out1_2",out1);
if var=2 then call symput("out2_2",out2);
if var=2 then call symput("ss_2",ss);
if var=3 then call symput("out1_3",out1);
if var=3 then call symput("out2_3",out2);
if var=3 then call symput("ss_3",ss);
if var=4 then call symput("out1_4",out1);
if var=4 then call symput("out2_4",out2);
if var=4 then call symput("ss_4",ss);
end;
run;
data data2; set data1;
if dv=1 then do;
if var=0 then out1=symget("out1_0");
if var=0 then out2=symget("out1_0");
if var=0 then ss=symget("ss_0");
if var=1 then out1=symget("out1_1");
if var=1 then out2=symget("out2_1");
if var=1 then ss=symget("ss_1");
if var=2 then out1=symget("out1_2");
if var=2 then out2=symget("out2_2");
if var=2 then ss=symget("ss_2");
if var=3 then out1=symget("out1_3");
if var=3 then out2=symget("out2_3");
if var=3 then ss=symget("ss_3");
if var=4 then out1=symget("out1_4");
if var=4 then out2=symget("out2_4");
if var=4 then ss=symget("ss_4");
end;
run;
をそれを行う効率的な方法?たとえば、 "var"変数の値が0から20の場合、この例では0から4の代わりに、 "var"のレベル数に基づいてコードを書き換えるループを使用します。
ご協力いただきありがとうございます、ありがとうございます!
なぜ参加しないのですか? – Reeza
詳しいことはありますか?どのテーブルに参加しますか? – Rosekendall