複数の変数に欠損値をセット(初期化)する
[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;
|
|