複数の変数に欠損値をセット(初期化)する
[OS] ALL
[リリース] SAS 9.1以降
[キーワード] Base, DATA, function, CALL MISSING
[質問]複数の変数に欠損値をセットするときに、ひとつずつセットしたり、DOループを使用したりしていますが、簡略化する方法はありますか。
[回答]
SAS9以降では、CALL MISSINGルーチンを使用して、複数の変数に欠損値をセットすることができます。 CALL MISSING(変数名1<,変数名2, ...>);
引数には文字変数と数値変数を同時に指定できます。数値変数には欠損値、文字変数にはスペースがセットされます。 使用例 DATA sample; /* サンプルデータセット作成 */ INPUT id $ var1-var3; CARDS; A001 10 0.1 100 A001 20 0.1 100 A002 20 0.2 200 A002 30 0.1 100 A003 40 0.3 300 A003 15 0.3 300 ; RUN; DATA sum(DROP=var1-var3 i); SET sample; BY id; RETAIN s_var1-s_var3 0; ARRAY s_var(3); ARRAY var_(3) var1-var3; SET sample; BY id; DO i=1 TO DIM(s_var); s_var(i) + var_(i); END; IF last.id THEN DO; OUTPUT; CALL MISSING(OF s_var1-s_var3); /* CALL MISSINGルーチン */ END; RUN; |