2016-09-13 15 views
0

質問: PROC TABULATEの出力でサブグループの順序を制御するにはどうすればよいですか?例えばSAS:PROC TABULATEヘッダーサブグループの再編成

、私はsegment以内に、この出力、すなわち(A、B)を持っているとします

data example; 
    input group $ segment $; 
    datalines; 
    1 A 
    1 B 
    2 A 
    2 A 
    3 B 
    3 B 
    ; 
run; 

proc tabulate data = example; 
    class group segment; 
    table group all, all = 'Total'*n segment*n; 
run; 

+-----------------------+------------+-------------------------+ 
+      +   +   segment   + 
+      +   +------------+------------+ 
+      + Total +  A  +  B  + 
+      +------------+------------+------------+ 
+      +  N  +  N  +  N  + 
+-----------------------+------------+------------+------------+ 
+ group    +   +   +   + 
+-----------------------+   +   +   + 
+ 1     +  2.00 +  1.00 +  1.00 + 
+-----------------------+------------+------------+------------+ 
+ 2     +  2.00 +  2.00 +  . + 
+-----------------------+------------+------------+------------+ 
+ 3     +  2.00 +  . +  2.00 + 
+-----------------------+------------+------------+------------+ 
+ All    +  6.00 +  3.00 +  3.00 + 
+-----------------------+------------+------------+------------+ 

は、どのように私は(B、A)、逆の順序で表示されるようにsegmentのサブグループを並べ替えるでしょうか?

+-----------------------+------------+-------------------------+ 
+      +   +   segment   + 
+      +   +------------+------------+ 
+      + Total +  B  +  A  + 
+      +------------+------------+------------+ 
+      +  N  +  N  +  N  + 
+-----------------------+------------+------------+------------+ 
+ group    +   +   +   + 
+-----------------------+   +   +   + 
+ 1     +  2.00 +  1.00 +  1.00 + 
+-----------------------+------------+------------+------------+ 
+ 2     +  2.00 +  . +  2.00 + 
+-----------------------+------------+------------+------------+ 
+ 3     +  2.00 +  2.00 +  . + 
+-----------------------+------------+------------+------------+ 
+ All    +  6.00 +  3.00 +  3.00 + 
+-----------------------+------------+------------+------------+ 

DESCまたはDESCENDING =を使用してサブグループを注文するオプションがあるようですが、それらのどちらも私には当てはまりません。私の問題の一部は私が使っている用語かもしれません。私は "A"と "B"はSAS辞書の中のサブグループとは言いません。

答えて

2

あなたが最初にデータをソートし、ユーザーorder=data場合はあなたが必要なものを得ることができる必要があります:

proc sort data=example; 
by group descending segment; 
run; 

proc tabulate data = example order=data; 
    class group segment; 
    table group all, all = 'Total'*n segment*n; 
run;