proc univariate data=repr888;
var tacc jj ppe1 d_rev_rec1 d_rev1 roa;
output out=a_quant p1=jj_p1 tacc_p1 ppe1_p1 d_rev_rec1_p1 d_rev1_p1 roa_p1 p99=jj_p99 tacc_p99 ppe1_p99 d_rev_rec1_p99 d_rev1_p99 roa_p99;
run;
proc sql;
create table a_winsorize as select repr888.stkcd,repr888.year,repr888.indcd,
case
when(tacc<tacc_p1) then tacc_p1
when(tacc>tacc_p99) then tacc_p99
else tacc
end as tacc,
case
when(ppe1<ppe1_p1) then ppe1_p1
when(ppe1>ppe1_p99) then ppe1_p99
else ppe1
end as ppe1,
case
when(d_rev_rec1<d_rev_rec1_p1) then d_rev_rec1_p1
when(d_rev_rec1>d_rev_rec1_p99) then d_rev_rec1_p99
else d_rev_rec1
end as d_rev_rec1,
case
when(d_rev1<d_rev1_p1) then d_rev1_p1
when(d_rev1>d_rev1_p99) then d_rev1_p99
else d_rev1
end as d_rev1,
case
when(jj<jj_p1) then jj_p1
when(jj>jj_p99) then jj_p99
else jj
end as jj,
case
when(roa<roa_p1) then roa_p1
when(roa>roa_p99) then roa_p99
else roa
end as roa
from repr888, a_quant;
quit;
proc sort data=a_winsorize;
by indcd year;
run;
我WISOR的过程没问题吧