添加变量后如何从SAS中的列中打印出max和min 3值

时间:2015-04-07 11:35:04

标签: sas

IN SAS - 我被要求将某个变量添加到XLS文件中,然后打印出该变量的最大和最小3个观察值(在本例中为Hsal)。我通过这个变量整理了数据,但我不知道如何打印出几个最小/最大值 -

data SAL5; set SAL1;
Hsal=(salary/hours);
run;
proc print data=SAL5;run;

proc sort data=SAL5;by Hsal;run;

1 个答案:

答案 0 :(得分:3)

您有几个选项,具体取决于您希望数据显示的方式以及是否要显示最大/最小3个观察值或值(即,您是否希望多次显示并列值,这会赢得&#39 ;如果所有值都是唯一的,那么您的数据就会出现问题。)

如果您想要输出1行,那么使用idgroup中的proc summary语句是最简单的方法。

否则,您可以利用proc univariate,默认情况下计算顶部和底部极端观测值或值。您需要使用ods output创建相关数据集,然后可以打印出来。您可能希望限制输出中的某些变量,您可以使用drop语句或var中的proc print语句轻松完成此操作

我在这里给了你所有3个选项。如果要在1行上显示最大/最小值(选项3),则可以在创建数据集后执行proc transpose。我以sashelp.class为例,只在您的数据中用Hsal替换年龄。

/* output on 1 line, max/min 3 observations */
proc summary data=sashelp.class nway;
output out=maxminobs1 (drop=_:) 
        idgroup (max(age) out[3] (age) = max_age)
        idgroup (min(age) out[3] (age) = min_age);
run;

proc print data=maxminobs1;
run;

/* output on 3 lines, max/min 3 observations */
ods output extremeobs = maxminobs2;
proc univariate data=sashelp.class nextrobs=3;
var age;
run;

proc print data=maxminobs2;
run;

/* output on 3 lines, max/min 3 values */
ods output extremevalues = maxminobs3;
proc univariate data=sashelp.class nextrval=3;
var age;
run;

proc print data=maxminobs3;
run;