输出SAS中的前10%

时间:2014-04-07 21:26:32

标签: sas limit

如何将SAS输出的观测数量限制在前10%?我知道obs = function,但我还没有弄清楚如何使obs =导致百分比。

提前致谢!

1 个答案:

答案 0 :(得分:1)

据我所知,并不是直接的方式来做你要求的事情。不过,你可以很容易地写一个宏来做到这一点。

假设您要求查看PROC PRINT中前10%的记录,您可以执行以下操作。

%macro top10pct(lib=WORK,dataset=);
proc sql noprint;
select max(ceil(0.1*nlobs)) into :_nobs 
from dictionary.tables
where upcase(libname)=upcase("&lib.") and upcase(memname)=upcase("&dataset.");
quit;

proc print data=&lib..&dataset.(obs=&_nobs.);
run;
%mend top10pct;

dictionary.tables拥有所有可用的PROC CONTENTS信息,包括逻辑观察数(NLOBS)。如果您一直在对数据集执行操作(例如删除SQL中的观察值),则此数字不是100%保证准确,但对于SAS数据集,这几乎总是准确的或足够接近。对于RDBMS表,这可能是未定义的,也可能不准确。