Proc表 - 自定义统计

时间:2014-02-01 17:55:11

标签: sas

假设我有以下数据集:

Category  Premium1  Premium2
A         10        20
A         15        40
B         10        15
C         20        25

使用proc制表(这是一个简化的例子,我有更多的分类变量和双向表),我想为每个类别显示Premium2超过Premium1的%变化。

现在我已经创建了一个Premium2_over_Premium1变量,我显示了这个变量的加权平均值,其中权重是Premium1。但这给了我一个因素,而不是百分比的变化。 例如,类别AI将获得((20/10)* 10 +(40/15)* 15)/(10 + 15)= 2.4,但我想看到的是2.4 - 1 = 1.4 = 140%。

这似乎是一个足够简单的任务,但我找不到办法做到这一点!任何帮助非常感谢。

1 个答案:

答案 0 :(得分:1)

您可以在PROC REPORT中执行此操作,但可能不在PROC TABULATE中执行此操作,至少在没有干预数据操作的情况下也是如此。

我没有完全按照你想要的百分比变化变量,因为你所描述的与我对百分比变化意义的看法不符,但我认为这可以得到你要求的结果。如果没有,这个概念应该很容易理解。

data have;
input Category $ Premium1  Premium2;
datalines;
A         10        20
A         15        40
B         10        15
C         20        25
;;;;
run;

proc report data=have nowd;
columns category premium1 premium2 pctChg;
define category/group;           *like CLASS in most other procs;
define premium1/analysis mean;   *use for analysis, show the mean;
define premium2/analysis mean;   *same, could include NOPRINT to hide these columns;
define pctChg/computed format=percent9.1;  *calculated (computed) column, with a format;
compute pctChg;                  *compute (calculate) the variable;
  pctChg = premium2.mean/premium1.mean - 1;  *to refer to analysis vars, use <var>.<statistic>;
endcomp;
run;
相关问题