2017-07-05 73 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; 
指定自定義百分