2014-02-01 2 views
2

Предположим, что у меня есть следующий набор данных:Proc Tabulate - пользовательские статистики

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

Использование ргос Tabulate (это упрощенная Exemple, у меня есть еще классификационные переменные и двухсторонние таблицы), я хочу, чтобы отобразить для каждого категория% изменения Premium2 над Premium1.

В настоящее время я создал переменную Premium2_over_Premium1, и я показываю средневзвешенное значение этой переменной, где вес Premium1. Но это дает мне фактор, а не изменение в процентах. Например, для категории AI будет получен ((20/10) * 10 + (40/15) * 15)/(10 + 15) = 2,4, но то, что я хотел бы видеть, составляет 2,4 - 1 = 1,4 = 140% ,

Это кажется довольно простой задачей, но я не мог найти способ сделать это! Любая помощь очень ценится.

ответ

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; 
+0

thx, это именно то, что я искал! –

Смежные вопросы