我在SAS中有一个表,该表的变量为X。 我只想知道X的范围,所以我使用了PROC UNIVARIATE,但是它提供了很多其他信息。 我一直在尝试通过以下方式使用RANGE函数,但不会产生任何结果。请帮忙!
DATA DATASET2;
SET DATASET1;
R=RANGE(X);
KEEP R;
RUN;
PROC PRINT DATASET2;
运行;
答案 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;