多分、やり方は多くあると思いますが、僕が一番に思いついたものを書きます。
ひねりのない方法です。
ついでに今回は数値型、文字型両方についてやってみます。
まず、以下のようなデータセットがあったとします
data Q1;
A=1;B='い';C=3;D='A';output;
A=.;B='ろ';C=.;D='B';output;
A=2;B='';C=4;D='';output;
A=.;B='';C=.;D='';output;
run;
数字変数が全てnullの場合はFL1に、文字変数が全てnullの場合はFL2に0,1を入れるとするならば
data A1;
set Q1;
FL1=missing(sum(of _numeric_));
FL2=missing(cats(of _character_));
run;
で
OK。
missing関数は指定した引数がnullなら1,違うなら0を返す関数です。
ただし、引数は1つしか指定できないので、少しだけ工夫します。
数字なら、全部足したものがnullなら、すなわち全数値変数がnullということで、
文字なら、空白を含めずに連結したものがnullであればすなわち全文字変数がnullということです。
ちなみにcmiss関数という型を問わずに、しかも引数に複数変数の指定が可能で、欠損値の数をカウントしてくれる便利関数があるので、それと配列を組み合わせれば同様のことが可能です。
SAS忘備録に関連する記事があるので、これを見ればすぐに応用できます。
「欠損値のチェックを簡単に行う。」
http://sas-boubi.blogspot.jp/search/label/%E9%96%A2%E6%95%B0%3A%20CMISS
0 件のコメント:
コメントを投稿