SAS如何计算一个变量,该变量是每个观测值的所有其他观测值的平均值?

时间:2014-09-15 18:04:16

标签: sql sas

例如,数据集a是

id   x
1    15
2    25
3    35
4    45

我想在数据集a中添加一列y,y是不包括当前id的x的平均值。 所以y_1 =(x_2 + x_3 + x_4)/ 3 =(25 + 35 + 45)/ 3.

1 个答案:

答案 0 :(得分:6)

在没有SQL的情况下最简单的方法是在每行中添加均值和n(使用PROC MEANS,然后合并值),然后使用math删除当前值。 IE,如果x_mean =(15 + 25 + 35 + 45)/ 4 = 30,x = 15,那么

x_mean_others = ((30*4)-15)/(4-1) = 105/3 = 35

或者,在SQL中,您可以使用相同的想法动态计算它。

proc sql;
  create table want as
    select x, (mean(x)*n(x) - x)/(n(x)-1) as y
    from have H
    ;
quit;

这利用了SAS的自动重新合并功能,在像SQL Server这样的东西中,你需要一个WITH子句来完成我想象的工作。