在winsorize的时候,经常反复用到同一个数字,比如下例中的10,请问能否使用macro等,在前面加一个公共变量?
如果我要添加变量,或者减少变量,就不需要手工把每一个数字都变成“10”。
/*winsorize*/
data b1;set a1; d=1;run;
proc means noprint;
var x1-x10 ;by d;
output out=b2(drop=_freq_ _type_) p10=x1-x10 p90=b1-b10;
data f1;
merge b2 b1; by d;
array z{1:10} x1-x10;
array x{1:10} a1-a10;
array b{1:10} b1-b10;
do i=1 to 10;
if z[i]<a[i] and z[i]~=. then z[i]=a[i] /*delete*/;
if z[i]>b[i] then z[i]=b[i]/*delete*/;
end;drop i d a1-a10 b1-b10;
run;