欠損値を任意の値に置き換える
[OS]ALL
[リリース] 8.1, 8.2
[キーワード] MISSING, MISSING VALUE, ARRAY
[質問]処理の都合で、欠損値の変数に対して別の値を入れたいと考えています。何か方法はあるでしょうか。
[回答]SAS System 8eでは欠損値を判定するためのMISSING関数が追加されました。これにより文字変数、数値変数を問わず、容易に欠損値を判定できます。
MISSING(変数名) ※戻り値が「1」ならその変数は欠損値
このMISSING関数とARRAYステートメントを使って、欠損値の変数を任意の値に置き換えるプログラム例は、次のとおりです。
/* データ内に存在する数値変数の欠損値に対しては「0」で穴埋めし、*/ /* 文字変数に対しては「欠損」という文字で穴埋めをします。*/ DATA work.dat2; SET work.dat1; /* DOループを使うための配列を定義する */ ARRAY nvar _numeric_; ARRAY cvar _character_; /* 数値変数の欠損値を調べる */ DO i=1 TO DIM(nvar); IF MISSING(nvar[i]) THEN DO; nvar[i]=0; END; END; /* 文字変数の欠損値を調べる */ DO i=1 TO DIM(cvar); IF MISSING(cvar[i]) THEN DO; cvar[i]='欠損値'; END; END; DROP i; RUN;
なお、V6の場合はMISSING関数が利用できませんので、「欠損値を0に置き換える」を参考に対応してください。
|