2017年3月28日火曜日

一部の集計系プロシジャで使える 「ORDER=オプション」で分類変数の値の出力順をカスタマイズする。




一部の集計系プロシジャ(PROC FREQ, MEANS, REPORTなど)では「ORDER=オプション」をサポートしています。

例えば性別の頻度集計で「男→女」や「女→男」の順で出すなど、出力順をカスタマイズできます。


今回はPROC FREQでの使用例を見ていきましょう。



サンプルデータ

data DT1;
input A @@;
cards;
2 1 1 3 3 3
;




ORDER=オプションの指定例


📝 注意
-----------------------------------------------------------------------
他のオプションとの組み合わせで、ORDER=オプションが機能しなかったり、出力順が変わることがあります。詳細はリファレンスを確認下さい。
(例えば、PROC MEANS等で「PRELOADFMT」や「CLASSDATA=」オプションを使う場合など)
-----------------------------------------------------------------------


  • ORDER = INTERNAL … 変数値を昇順に並び替えて出力
proc freq data=DT1  order=internal;
  tables A;
run;



PROC FREQのデフォルトはORDER=INTERNALです。


  • ORDER = DATA … データセットに格納されている値の順に出力
proc freq data=DT1  order=data;
  tables A;
run;

注意点:「ORDER=DATA」の落とし穴


  • ORDER = FREQ … 度数が多い順に出力
proc freq data=DT1  order=freq;
  tables A;
run;



  • ORDER = FORMATTED … 変数に割り当てたフォーマットに変換させた時の値順。
proc format;
value SEX
1="MALE"
2="FEMALE"
3="UNANSWERED"
;
run;
proc freq data=DT1  order=formatted;
  tables A;
  format A SEX.;
run;




ORDER=オプションの指定場所

指定場所は以下のように様々です。詳細が知りたい方は別途リファレンスをご覧ください。

* PROC MEANS : CLASS変数全体にORDER=オプションを適用 ;
proc means data=xx order=internal;
 var xx;
 class yy;
run;

* PROC MEANS : CLASS変数YYにORDER=オプションを適用 ;
proc means data=xx ;
 var xx;
 class yy / order=internal;
 class zz ;
run;

* PROC REPORT : 出力変数XXにORDER=オプションを適用 ;
proc report data=xx;
  column xx yy;
  define xx / order order=internal;
  define yy / display;
run;



Tips

今回紹介したオプションの他に、よく使用されるMISSINGオプションも参考に。



0 件のコメント:

コメントを投稿