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

0 sql sas

例如,数据集a是

id   x
1    15
2    25
3    35
4    45
Run Code Online (Sandbox Code Playgroud)

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

Joe*_*Joe 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
Run Code Online (Sandbox Code Playgroud)

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

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

这利用了SAS的自动重新划分,就像SQL Server一样,你需要一个WITH条款来实现我想象的这项工作.