我有一组数据info,包括变量stkcd fyear roa roe,stkcd是股票代码,fyear是年度,roa,roe是两个会计指标,数值型变量。现在我需要对所有股票分年度对roa,roe进行1%,99%winsorize。
这是我自己找到的winsorize程序:proc sort data=info;by fyear;
proc means data=info;
var roa roe;
by fyear;
output out=tmp(drop=_freq_ _type_) p1=x1-x2 p99=y1-y2;run;
data winsorize1_info;
merge info tmp;
by fyear;
array z{1:2} roa roe;
array x{1:2} x1-x2;
array y{1:2} y1-y2;
do i=1 to 2;
if .<z<x then z=x;
if z>y then z=y;
end; run;
程序我基本可以看懂,但是我不明白,为什么新生成的 winsorize1_info 中,i的值等于3呢?
谁能帮我解释解释吗?谢谢了!