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

时间:2014-02-14 18:33:04

标签: sas

我有一个SAS数据集,让我们说:

No d1 d2 d3 ... dn
1  2  3  4 ... n1
2  3  4  5 ... n2
3  4  5  6 ... n3

我现在需要找到SAS中所有列的平均值。 有办法吗?

列数不是特定的。 如果我需要d1 - dn列的平均值,那么我期望的输出是:

3 4 5 ..  (n1+n2+n3)/3

有没有办法在数据步骤中执行此操作或使用proc sql或proc iml?

4 个答案:

答案 0 :(得分: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;

如果您不需要,drop =子句将排除类型和频率的自动变量。

答案 1 :(得分:4)

假设所有必需的变量都以d开头,那么您可以使用冒号通配符运算符来全部选择它们。我在这里使用过PROC SUMMARY,这与使用NOPRINT选项的PROC MEANS相同。显然,这是对@pteranodon

的答案的一个非常小的改动
proc summary data=have nway;
var d: ;
output out=want (drop=_:) mean=;
run;

答案 2 :(得分:2)

是的,在数据​​步骤中,您将使用类似mean(OF d1-d100)的内容。注意函数内的of。这是一个象征性的参考,说计算d1,d2,d3,...,d100列的平均值

答案 3 :(得分:1)

您可以使用PROC MEANS,例如

PROC MEANS DATA = indata; 
VAR d1-dn; 
OUTPUT=outdata MEAN=m1-mn; 
RUN;