在SAS中计算平均值

时间:2018-07-07 15:36:28

标签: sas average

我一直在使用proc means从特定月份的数据集中获取平均 copay ,但我还需要通过< em> pharmacy 。

我似乎无法使用proc means来做到这一点,我更喜欢它作为可以查询的数据集,而不是200个药店中的proc print。我尝试了下面的代码,但没有得到与proc means相同的数字:

这是我通过药房汇总数据的方式,是否有办法通过药房将其取平均值而不是求和?

    %pjsum(add_ram,  RAM      pme_id pharmacy month, patient_benefit APPR, sum);

1 个答案:

答案 0 :(得分:0)

假设您有一个 Patient_benefit 数字列以及 pharmacy month 列,则可以使用proc means,方法是在< em> class 和 var 子句中的数字列。确保指定平均值统计信息。下面输出一个名为 AggData 的数据集,其中以 Avg_Patient_Benefit 作为汇总列。

proc means data=myData nway ;
  class pharmacy month;
  var patient_benefit;
  output out=AggData mean=Avg_Patient_Benefit;  
run;

或者,您可以使用proc sql运行聚合SQL查询:

proc sql;
   create table AggData as
   select pharmacy, month, mean(patient_benefit)
   from myData
   group by pharmacy, month;
quit;

您甚至可以为各个月份的列运行条件汇总:

proc sql;
   create table AggData as
   select pharmacy, 
          mean(case when month = "July" then patient_benefit else . end) as avg_july_month,
          mean(case when month = "August" then patient_benefit else . end) as avg_aug_month,
          mean(case when month = "September" then patient_benefit else . end) as avg_sep_month
          ...
   from myData
   group by pharmacy;
quit;