2017-07-05 34 views
1

我想删除顶部和底部0.1%的一些异常值。 PROC MEANS有p99选项,只有帮助去除最高1%,而不是0.1%。还有另一种方法可以做到吗?我想到了PROC RANK,但不确定它是否会给出相同的结果。 我的代码是:proc rank vs proc意味着删除顶部和底部0.1%

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会产生相同的结果吗?

回答

-1

使用proc rank的关系处​​理和分数选项,您应该具有您需要的灵活性以解决此问题。

检查SAS文档here

2

proc means只能访问某些默认百分,但是你可以在proc univariate

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