2016-09-13 1 views
0

Question: Comment contrôler l'ordre des sous-groupes dans la sortie de PROC TABULATE?SAS: PROC TABULATE Réorganiser les sous-groupes d'en-têtes

Par exemple, supposons que j'ai cette sortie, à savoir (A, B) dans 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 + 
+-----------------------+------------+------------+------------+ 

Comment puis-je réordonner les sous-groupes de segment à apparaître dans l'ordre inverse, (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 + 
+-----------------------+------------+------------+------------+ 

Il semble qu'il y ait peut-être une option pour commander des sous-groupes à l'aide ou DESC = DESCENDING, mais aucun de ceux qui travaillent pour moi. Une partie de mon problème peut être la terminologie que j'utilise. Je ne pense pas que "A" et "B" sont appelés sous-groupes dans le lexique SAS.

Répondre

2

Si vous triez les premières données et l'utilisateur order=data vous devriez être en mesure d'obtenir ce dont vous avez besoin:

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;