Job SAS

【SAS】データセットの欠損値を置換する3つの方法

2021年6月15日

こんにちは!しなもんです。

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に置換する場合は方法③を使用するのが、効率がいいと思いました。

調べていく中で方法③は知らなかったので早速仕事で活かしていきたいと思います。

  • この記事を書いた人
  • 最新記事

しなもん

会社員をしながら10カ国をひとり旅。旅先でのおすすめ情報などを発信していきます。
【仕事】社内SE(4年)→マーケター(現在)
【経歴】都内某私立大学→クレジットカード会社→SaaS系ベンチャー

-Job, SAS