proc rank vs proc意味着删除顶部和底部0.1%

时间:2017-07-05 02:23:58

标签: sas

我想删除顶部和底部0.1%的一些异常值。 PROC MEANS有p99选项,只能帮助删除前1%,而不是0.1%。还有另一种方法吗?我想到PROC RANK但不确定它是否会给出相同的结果。 我的代码是:

    proc means data=input noprint; by date; output out=trunc(drop=_FREQ_ _TYPE_) p99(var1)=p99_var1 p99(var2)=p99_var2; run;
data input; merge input trunc; by date;
    if var1 < p99_var1 and var2<p99_var2;run;

    versus 

    proc rank data=input out=input percent;
        by date;
         var var1 var2;
         ranks percentile1 percentile2;
    run;
data input; set input; 
where 0.001<percentile1<0.999 and 0.001<percentile2<0.999;run

我知道在第一种方法中我使用99%(因为我不知道如何用这种方法做99.9%),但我在第二种方法中使用了99.9%。如果我使用99%作为第二种方法,哪一种方法更好? 2会产生相同的结果吗?

2 个答案:

答案 0 :(得分:2)

proc means只能访问某些默认百分位数,但您可以在proc univariate

中指定自定义百分位数
proc univariate data=sashelp.prdsal3 noprint;
   var actual;
   output out=want pctlpre=P_ pctlpts=0.1,99.9;
run;

答案 1 :(得分:-1)

使用proc等级的tie处理和分数选项,您应该具备此问题所需的灵活性。

查看SAS文档here