ORDER を指定した変数で行を並べ替えます。
ポイント
- 以下のように、ORDER変数で同じ値が繰り返す部分は空白表示になる(左から2つ目の表)
- この部分は「SPANROWS」で、単一のセルにまとめられる(左から3つ目の表。このオプションはODS出力の種類によってサポートされていなかったり、挙動が異なるので注意)
- ORDER変数の元々の格納値が欠損値だと、その行は出力から除外される(欠損値の行も出力する方法は下のほうで解説)
GROUP を指定した変数でグループ化(組み合わせ毎に1行化)します。
ポイント
- ORDERのところで説明したポイントと同じ
- あと、同じPROC REPORT内で、GROUP変数のほかにDISPLAY変数も設定した場合、グループ化出来ない&NOTEメッセージが表示されるので、取り扱い注意!
ORDER, GROUP,(あと別記事で解説しているACROSS)を指定した変数の元々の格納値が欠損値だと、その行は出力から除外されます。
以下2つの方法で欠損値の行も出力可能です。
方法1
PROC REPORTステートメントに「MISSING」を指定する。
この方法は、PROC REPORT内の全ORDER, GROUP, ACROSS変数に対して効力がある。
方法2
DEFINEステートメントに「MISSING」を指定する。
この方法は、MISSINGを指定したDEFINEステートメント内のみに効力がある。
proc report data=DT1 nowd spanrows; column NO NO2 A; define NO / order missing; define NO2 / order missing; define A / display ; run; |
(気をつけたいのが、例えばX, YというORDER変数があったとして、XにはMISSINGを指定して、Yには指定しなかった場合、、Xの格納値がなんであろうと、Yの元々の格納値が欠損値だとその行は出力から除外されます)
SASのマニュアルに今後のリリースで設定を変更するかもという注意があったので、2015/11/12時点での話になりますが、ORDER, GROUP, ACROSSを指定した変数は「ORDER=FORMATTED」という、データの並べ替えの方法が裏で設定されていて、これがちょっと混乱を招くおそれがあります。
以下記事をご覧ください。
3.並べ替え・グループ化【ORDER, GROUP】
0 件のコメント:
コメントを投稿