Proc 排名与 proc 意味着删除顶部和底部的 0.1%



我想删除顶部和底部 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 会产生相同的结果吗?

proc means只能访问某些默认百分位数,但是您可以在proc univariate中指定自定义百分位数

proc univariate data=sashelp.prdsal3 noprint;
var actual;
output out=want pctlpre=P_ pctlpts=0.1,99.9;
run;

使用 proc 秩的领带处理和分数选项,您应该具有解决此问题所需的灵活性。

在此处查看 SAS 文档。

最新更新