こんにちは!しなもんです。
SASでデータ分析をする際、任意の数値変数の値が欠損値のときに、0に置き換えることをよくやるので備忘としてまとめておきます。みなさまのお役に立てますと幸いです。
こんな方におすすめ
- SASでデータのクレンジングや分析を行う人
- ・SASでデータの扱いを学びたい人
他にも方法があると思いますが、本記事では3つの方法をご紹介させて頂きます。
方法① IF文
欠損値は、プログラムでは「.(ピリオド)」で表せます。
次の例は、a1が欠損値のとき0に置き換えるプログラムです。
data a;
set a;
if a1 = . then a1 = 0;
run;
方法② CASE文
if文ではなくcase文で処理する場合は以下のプログラムになります。
data a;
set a;
case when a1 IS MISSING then 0
end
run;
方法③ データ内の欠損を一括変換
全ての欠損値に同じ値(たとえば0)を代入する方法です。SAS/STATのSTDIZEプロシジャを利用することもできます。この場合、MISSING=オプションで指定した数値が欠損値に代入されます。
PROC STDIZE DATA=data1 REPONLY MISSING=0 OUT=out1;
VAR _numeric_;
RUN;
ちなみに「_NUMERIC_」は全ての数値変数を意味します。また全ての文字変数を意味する「_CHARACTER_」自動変数です。
まとめ
1つの変数の欠損値を0に置き換える場合は方法①または②でもよいですが、複数の変数を一気に0に置換する場合は方法③を使用するのが、効率がいいと思いました。
調べていく中で方法③は知らなかったので早速仕事で活かしていきたいと思います。