Могут ли строки PROC REPORT RBREAK включать несколько уровней группировки? - PullRequest
1 голос
/ 12 октября 2009

У меня есть некоторый код PROC REPORT, который генерирует отчет с 2 уровнями группировки, но RBREAK всегда просто суммирует все. Я получаю что-то вроде этого, например:

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

Есть ли какой-нибудь способ, чтобы PROC REPORT суммировал эту группу второго уровня без изменений? У меня более 140 000 наблюдений, и сейчас я дублирую каждое наблюдение и устанавливаю переменную группировки первого уровня равной одному постоянному значению, чтобы получить итоговую производственную строку с включенной группировкой второго уровня:

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

Или даже если PROC REPORT не может ничего сделать автоматически, есть ли лучший способ получить итоговую сумму внизу? Я мог бы использовать форматы с несколькими метками ... но, насколько я знаю, они не работают в PROC REPORT.

1 Ответ

0 голосов
/ 13 октября 2009

Это действительно легко сделать с 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|
+----------+-----------+------------+------------+------------+
*/
...