我有一个SAS数据集,让我们说:
No d1 d2 d3 ... dn
1 2 3 4 ... n1
2 3 4 5 ... n2
3 4 5 6 ... n3
Run Code Online (Sandbox Code Playgroud)
我现在需要找到SAS中所有列的平均值.有办法吗?
列数不是特定的.如果我需要d1- dn列的平均值,那么我期望的输出是:
3 4 5 .. (n1+n2+n3)/3
Run Code Online (Sandbox Code Playgroud)
有没有办法在数据步骤或使用proc sql或proc iml?
proc means 是计算列式统计信息的方法.
data have;
input No d1 d2 d3 d4;
datalines;
1 2 8 60 80
2 3 12 50 70
3 4 10 40 60
;
run;
proc means data=have noprint nway;
var d1-d4;
output
out=want(drop=_TYPE_ _FREQ_)
mean=;
run;
Run Code Online (Sandbox Code Playgroud)
如果您不需要,drop =子句将排除类型和频率的自动变量.
假设所有必需的变量都以 d 开头,那么您可以使用冒号通配符运算符来选择它们。我在这里使用了 PROC Summary,这与带有 NOPRINT 选项的 PROC MEANS 相同。显然这是对@pteranodon 的答案的一个非常小的改变
proc summary data=have nway;
var d: ;
output out=want (drop=_:) mean=;
run;
Run Code Online (Sandbox Code Playgroud)