2014年12月5日金曜日

FREQプロシジャのLISTオプションで、変数値同士の組み合わせを見易くする。




データの組み合わせなどを確認する際に役立つ、ちょこっとしたオプションを紹介。

*** Sample Data ;
data DT1;
input CODE$ NAME$;
cards;
001 AAA
004 DDD
003 BBB
001 AAA
004 DDD
002 CCC
002 CCC
;

 CODE 
NAME
  001  
  AAA  
  004
  DDD  
  003
  BBB  
  001
  AAA  
  004
  DDD  
  002
  CCC  
  002
  CCC  


たとえば、上のサンプルで「CODEとNAMEの値の組み合わせを調べたい」ってなったとします。


そこでまずはFREQを使ってみます。

proc freq data=DT1;
   tables CODE * NAME / missing;
   format _all_;
run;




これでもいいけど、もうちょっと変数値同士の組み合わせを見やすくしたいので、、

proc freq data=DT1;
   tables CODE * NAME / missing list;
   format _all_;
run;


「LISTオプション」を追加するとリスト形式になって、確認しやすくなりました。


ちなみに今回はFREQプロシジャに以下を設定してますが、この辺は状況に合わせて設定してください。
  • 変数に欠損値があった場合、欠損値も水準に含めるため「missingオプション」を設定(組み合わせを見たい時って、欠損値も含めたいことが多いので)
  • formatをあてた値の組み合わせではなく、変数値の組み合わせを見たい場合「format _all_」で全変数にあてられたformatを解除。


📝 1つ気をつけたいのが、、

例えば、以下の例

data DT2;
   X="   AAA"; output;
   X="BBB"; output;
run;

proc freq data=DT2;
   tables X / missing list;
   format _all_;
run;



データセットDT2の1行目の変数Xの値は「   AAA」って感じで先頭に半角スペースが含まれていますが、
FREQの出力結果を見ると、この半角スペースが削除されて表示されていますよね。

プロシジャの結果がHTML形式等で表示される際、先頭の半角スペースを除く仕様みたいです。

こんな感じで、格納値の通りに表示されない場合があるので、
データクリーニングとか、ちゃんと格納値を確認したい場合は、今回の機能だけじゃなくて、FREQをかける前の元データを目視確認したり、改行・文字化け・余計なスペース等のおかしなデータを検出するチェックプログラムを作ったり、別途確認が必要です。



てことで、あんまり使わなそうな機能でも、覚えておくと今回のようにちょっとした事で役立つという話でした。
SASに無駄な機能なしです。



0 件のコメント:

コメントを投稿