winsorize data

Occasional Contributor
Posts: 17

winsorize data

Hi, can I get some help on how to winsorize my data. I have total of 8 variables (for example, A-H) with 8000 observations that I have to winsorize. Thanks in advance!

Valued Guide
Posts: 564

Re: winsorize data

Maybe that old thread has the answer for you: or this one

New Contributor
Posts: 4

Re: winsorize data

Otherwise look at this solution and you might be able to work from there. It is not the neatest but your question is not so specific. I have used fifth and ninetyfifth percentiles and set those values to missing.

data test;

set sashelp.cars;

keep Horsepower ;

run;

proc univariate data=test noprint;

var Horsepower;

output out=percentiles p5=Horsepower_p5 p95=Horsepower_p95 ;

run;

data want;

if _n_=1 then set percentiles;

set test;

if not (Horsepower_p5 < horsepower < Horsepower_p95) then horsepower=. ;

run;

Super User
Posts: 10,766

Re: winsorize data

IML code:

Code: Program

`data have; call streaminit(1234); do i=1 to 100;  a=ceil(rand('uniform')*100);  b=ceil(rand('uniform')*100);  output; end; drop i;run;%let low=0.05;%let high=0.95;proc iml;use have;read all var _num_ into x[c=vname];close have;call qntl(q,x,{&low , &high});do i=1 to ncol(x); x[loc(x[,i]<q[1,i]),i]=.; x[loc(x[,i]>q[2,i]),i]=.;end;create want from x[c=vname];append from x;close want;quit;`
Discussion stats
• 3 replies
• 260 views
• 0 likes
• 4 in conversation