2009-10-12 7 views
1

J'ai un certain code PROC REPORT qui génère un rapport avec 2 niveaux de regroupement, mais le RBREAK résume toujours juste pour tout. Je reçois quelque chose comme ceci par exemple:Can PROC REPORT Les lignes RBREAK incluent plusieurs niveaux de regroupement?

 
    Row1: Type A Before 100 200 300 
    Row2:   After 400 500 600 
    Row3: Type B Before 100 200 300 
    Row4:   After 400 500 600 
    Row5: Total   700 800 900 

Est-il possible d'obtenir le rapport PROC pour résumer avec ce second niveau de regroupement intact? J'ai 140.000 observations, et en ce moment je dupliquer chaque observation et le réglage de la première variable de regroupement de niveau à une valeur constante pour obtenir une ligne totale fabriquée avec le deuxième groupe de niveau inclus:

 
    Row1: Type A Before 100 200 300 
    Row2:   After 400 500 600 
    Row3: Type B Before 100 200 300 
    Row4:   After 400 500 600 
    Row5: Total Before 700 800 900 
    Row6:   After 701 801 901 

Ou même si PROC REPORT ne peut rien faire automatiquement, y a-t-il un meilleur moyen d'obtenir le total au bas de l'échelle? Je pourrais utiliser des formats multi-étiquettes ... mais ils ne fonctionnent pas dans PROC REPORT autant que je sache.

+0

lignes 5 et 6 ne semble pas être correct. Soit ça, ou je ne suis même pas capable d'additionner quelques chiffres ensemble ... :-) –

+0

Haha, certainement n'allait pas pour la précision là-bas, juste en jetant des nombres différents;) – chucknelson

Répondre

0

C'est vraiment facile à faire avec proc tabulate:

/* test data */ 
data one; 
    do type = "A", "B"; 
    do time = "Before", "After"; 
     drop AfterPremium; 
     AfterPremium = 300 * (time="After"); 
     v1 = 100 + AfterPremium; 
     v2 = 200 + AfterPremium; 
     v3 = 300 + AfterPremium; 
     output; 
    end; 
    end; 
run; 

proc tabulate data=one order=data formchar="|-+++++++++"; 
    class type time; 
    var v1-v3; 
    tables (type all="All Types")*time, (v1 v2 v3)*sum; 
run; 
/* on log 
+----------------------+------------+------------+------------+ 
|      |  v1  |  v2  |  v3  | 
|      +------------+------------+------------+ 
|      | Sum  | Sum  | Sum  | 
+----------+-----------+------------+------------+------------+ 
|type  |time  |   |   |   | 
+----------+-----------+   |   |   | 
|A   |Before  |  100.00|  200.00|  300.00| 
|   +-----------+------------+------------+------------+ 
|   |After  |  400.00|  500.00|  600.00| 
+----------+-----------+------------+------------+------------+ 
|B   |Before  |  100.00|  200.00|  300.00| 
|   +-----------+------------+------------+------------+ 
|   |After  |  400.00|  500.00|  600.00| 
+----------+-----------+------------+------------+------------+ 
|All Types |Before  |  200.00|  400.00|  600.00| 
|   +-----------+------------+------------+------------+ 
|   |After  |  800.00|  1000.00|  1200.00| 
+----------+-----------+------------+------------+------------+ 
*/ 
+0

Merci pour l'exemple Chang, mais je J'utilise des choses comme des colonnes calculées et autres dans mon PROC REPORT, et j'utilise des styles pour la sortie HTML (ce qui me semble plus facile et mieux supporté dans PROC REPORT). Des choses similaires sont-elles disponibles dans PROC TABULATE? Merci pour votre aide ... encore! – chucknelson

+0

@chucknelson. les colonnes calculées ne sont pas disponibles dans proc tabulate. –

Questions connexes