1

我有一些PROC REPORT代码可以生成具有 2 级分组的报告,但RBREAK始终只是汇总所有内容。例如,我得到这样的东西:

    第 1 行:100 200 300 之前的 A 类  
    第 2 行:400 500 600 之后   
    第 3 行:B 型在 100 200 300 之前  
    第 4 行:400 500 600 之后  
    第 5 行:总计 700 800 900

有什么方法可以PROC REPORT完整地总结第二级分组?我有 140,000 多个观察值,现在我正在复制每个观察值并将第一级分组变量设置为一个常数值,以获得包含第二级分组的制造总行:

    第 1 行:100 200 300 之前的 A 类  
    第 2 行:400 500 600 之后   
    第 3 行:B 型在 100 200 300 之前  
    第 4 行:400 500 600 之后  
    第 5 行:700 800 900 之前的总数
    第 6 行:701 801 901 之后

或者即使PROC REPORT不能自动做任何事情,有没有更好的方法来获得底部的总数?PROC REPORT我希望我可以使用多标签格式……但据我所知,它们不起作用。

4

1 回答 1

0

这很容易做到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|
+----------+-----------+------------+------------+------------+
*/
于 2009-10-12T21:11:24.577 回答