如何在SAS中查找列的平均值

use*_*403 4 sas

我有一个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?

pte*_*don 6

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 =子句将排除类型和频率的自动变量.


Lon*_*ish 4

假设所有必需的变量都以 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)