如何在SAS中使用PROC TABULATE来计算与主要组相比的子组百分比?

时间:2016-06-16 14:54:28

标签: sas

是否可以在PROC TABULATE中使用PCTSUM来计算子组(或甚至子子组)占整个组的百分比?最好提供一个例子。

这是一个示例数据集:

data sample;
input make $ model $ owned rented;
datalines;
Toyota Corolla 400 224
Toyota Camry 750 700
Honda Civic 650 519
Honda Accord 225 203
;

我知道以下PROC TABULATE系列会给我出租的车辆百分比

proc tabulate data=sample;
class make model;
var owned rented;
table (make='Vehicle Make' all), owned='Total Owned'*sum rented='Rented'*(sum='Total Rented' pctsum<owned>='Pct Rented');
run;

像这样:

Veh Make  TotOwned   TotRent    PctRent
Honda     875        722        82.51%
Toyota    1150       924        80.35%
All       2025       1646       81.28%

但是有可能通过模型​​打破这一点,以便它告诉我们租用了多少百分比的公民(519/650 = 79.8%)但是所有本田公司租用的公民中有多少百分比( 875分之519= 59.3%)?

如何编写PROC TABULATE行以便它显示:

Veh Make  VehModel TotOwned   TotRent    PctRent
Honda     Accord   225        203        23.20%
          Civic    650        519        59.31%
          All      875        722        82.51%
Toyota    Camry    750        700        60.87%
          Corolla  400        224        19.48%
          All      1150       924        80.35%
All                2025       1646       81.28%

请注意,本田车型的23.2%和59.31%总计达到本田小计的82.51%。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:1)

我能做的最好的事情是将表格拆分成页面,然后使用PAGEPCTSUM。您可以将其输出到数据集,然后使用其他PROC TABULATEPROC REPORT或类似内容重新打印它(如果您使用的是打印输出)。

proc tabulate data=sample;
  class make model;
  var owned rented;
  table (make='Vehicle Make'), model='Vehicle Model',
         owned='Total Owned'*sum rented='Rented'*
          (sum='Total Rented' pagepctsum<owned>='Pct Rented');
run;