2016-09-13 118 views
0

问题:如何控制PROC TABULATE输出中子组的顺序?SAS:PROC TABULATE重新排列标题子组

举例来说,假设我有这样的输出,即(A,B)内segment

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 + 
+-----------------------+------------+------------+------------+ 

如何我会重新排序的segment的分组出现在相反的顺序,(B,A)?

+-----------------------+------------+-------------------------+ 
+      +   +   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;