[code:2e4p1ytq]proc rank data = have out = rank_out groups = 100;
var a b c d e f;
ranks rank_a rank_b rank_c rank_d rank_e rank_f;
run;
data final;
set rank_out;
if max(of rank_:) < 30;
run;[/code:2e4p1ytq]
对排行的定义受对ties 如何处理的影响。对百分位的定义当然和proc univariate的定义也不同,虽然本质上差异不大。假定你的列前是从小往大数。
to jingju11
I usually do this:
******************************************;
data _null_;
set original nobs=ntotal;
setn=int(ntotal*0.3);
call symput('nextr', setn);
run;