例如,数据集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.
在没有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条款来实现我想象的这项工作.