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