2015年11月25日水曜日

REPORTプロシジャ入門5:転置集計【ACROSS】



「ACROSSオプション」 を使うと、集計結果を横に転置したような形で出力することができます。



構文

  DEFINE   変数名  /  ACROSS ;

📝
ACROSSオプションは、ORDER・GROUPオプションと同様、欠損値のオブザベーションが除外されたり、並び順がおかしくなる注意点もあるので以下記事も要確認。



サンプルデータ

data DT1;
input A$ B C @@;
cards;
aa 10 11  bb 20 22  aa 10 22  aa 10 11  bb 20 22
;
 A  
 aa
 10 
 11 
 bb 
 20 
 22 
 aa
 10
 22
 aa 
 10 
 11 
 bb 
 20 
 22 



簡単な例

proc report data=DT1 nowd;
  column A;
  define A / across ;
run;

Aの値「aa」「bb」を横に並べて、各値の度数を出しています。


以下のように複数の変数を横に並べることも可能。

proc report data=DT1 nowd;
  column A B;
  define A / across ;
  define B / across ;
run;



変数のネスト

COLUMNステートメントにカンマ「 , 」を入れると変数をネストして度数集計することが可能。

proc report data=DT1 nowd;
  column A , B;
  define A / across ;
  define B / across ;
run;

AとBの組み合わせの度数を求めています。


また以下のように、変数をカッコ囲むと、ネスト先で横に並べることができます。

proc report data=DT1 nowd;
  column A , (B C);
  define A / across ;
  define B / across ;
  define C / across ;
run;

AとB, AとCの組み合わせの度数を求めています。



ちなみに、ANALYSISオプションを用いて度数以外の集計も可能。

proc report data=DT1 nowd;
  column A , B;
  define A / across ;
  define B / analysis sum ;
run;

Aの値毎にBの合計値を求めています。



クロス集計

proc report data=DT1 nowd;
  column A B;
  define A / group ;
  define B / across ;
run;

GROUPとACROSSを組み合わせて、クロス集計が出来ます。





REPORTプロシジャ入門記事一覧

2.ヘッダーの設定
3.並べ替え・グループ化【ORDER, GROUP】
5.転置集計【ACROSS】

0 件のコメント:

コメントを投稿