如何计算SAS中变量的范围?

时间:2018-09-23 16:51:36

标签: sas

我在SAS中有一个表,该表的变量为X。 我只想知道X的范围,所以我使用了PROC UNIVARIATE,但是它提供了很多其他信息。 我一直在尝试通过以下方式使用RANGE函数,但不会产生任何结果。请帮忙!

DATA DATASET2;
SET DATASET1;
R=RANGE(X);
KEEP R;
RUN;
PROC PRINT DATASET2;

运行;

2 个答案:

答案 0 :(得分:2)

范围函数用于一行内,并且您尝试过用于列,因此可能会有零。 范围函数可以如下使用。

  R= range(x,y,x);

对于一列,您需要使用proc手段。

 proc means data=sashelp.class range maxdec=2;
  var age;
  run;

或使用如下所示的proc sql。

 proc sql;
select max(age) -min(age) as range
from sashelp.class;

答案 1 :(得分:2)

您还可以在proc sql中使用range函数,该函数在列而不是行上进行操作:

proc sql;
  select range(age) from sashelp.class;
quit;

如果您不喜欢sql,这也可以在数据步骤中完成:

data _null_;
  set sashelp.class end = eof;
  retain min_age max_age;
  min_age = min(age,min_age);
  max_age = max(age,max_age);
  if eof then do;
    range = max_age - min_age;
    put range= min_age= max_age=;
  end;
run;

或等效地:

data _null_;
  do until (eof);
    set sashelp.class end = eof;
    min_age = min(age,min_age);
    max_age = max(age,max_age);
  end;
  range = max_age - min_age;
  put range= min_age= max_age=;
run;