Sas 过程列表-自定义统计

Sas 过程列表-自定义统计,sas,Sas,假设我有以下数据集: Category Premium1 Premium2 A 10 20 A 15 40 B 10 15 C 20 25 使用proc TABLATE(这是一个简化的示例,我有更多的分类变量和双向表),我想为每个类别显示Premium2相对于Premium1的百分比变化 现在我已经创建了一个Premium2_over_Premium1变量,我显示了这个变

假设我有以下数据集:

Category  Premium1  Premium2
A         10        20
A         15        40
B         10        15
C         20        25
使用proc TABLATE(这是一个简化的示例,我有更多的分类变量和双向表),我想为每个类别显示Premium2相对于Premium1的百分比变化

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


这似乎是一个简单的任务,但我找不到一个方法来做它!非常感谢您的帮助。

您可以在
PROC REPORT
中执行此操作,但可能不会在
PROC tablate
中执行,至少在没有中间数据步骤的情况下

我没有完全理解你想要的百分比变化变量,因为你所描述的与我所认为的百分比变化的含义不符,但我认为这会得到你想要的结果。如果不是,这个概念应该很容易理解

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;
数据已经存在;
输入类别$Premium1 Premium2;
数据线;
A 1020
A 15 40
B 10 15
C 20 25
;;;;
跑
proc报告数据=已更新;
列类别premium1 premium2 pctChg;
定义类别/组*和大多数其他过程中的类一样;
定义premium1/分析平均值*用于分析,显示平均值;
定义premium2/分析平均值*同样,可以包括NOPRINT来隐藏这些列;
定义pctChg/计算格式=百分比9.1*计算(计算)列,具有格式;
计算pctChg*计算变量;
pctChg=premium2.mean/premium1.mean-1*要引用分析变量,请使用。;
endcomp;
跑