Help using Base SAS procedures

how to trim numerical variables in sas?

Reply
Occasional Contributor
Posts: 5

how to trim numerical variables in sas?

Hello,

 

I have a sample including the variables of Return, Earnings and Size from 1980 to 2015. I want to remove (delete) the higher and lower 1% of each variable's observations each year using SAS 9.4. however, I am not sure about the codes I should use.

 

can you please help me?

 

thanks in advance

Regular Contributor
Posts: 226

Re: how to trim numerical variables in sas?

Occasional Contributor
Posts: 5

Re: how to trim numerical variables in sas?

thank you so much. can you please advise me how to extend the code to do this for each year?
Super User
Posts: 9,779

Re: how to trim numerical variables in sas?

The following delete the top and bottom 20% data for each year.

If you need 1% change GROUPS=100 and NOT IN (0 99) .

 

data air;
 set sashelp.air;
 year=year(date);
 drop date;
run;
proc rank data=air out=temp groups=5;
by year;
var air;
ranks r_air;
run;
data want;
 set temp;
 if r_air not in (0 4);
run;
Contributor
Posts: 20

Re: how to trim numerical variables in sas?

@Ksharp This is a good approach. But Proc Rank only works when obersvation numbers are larger than GROUPS size. I did a draft based on the reference by @wong

 

data air;
 set sashelp.retail;
 rename sales=air;
 drop date;
run;

proc means data=air noprint;
by year;
var air;
output out=stat
		p1=p1
		p99=p99;
run;

data r_air;
merge air(in=x) stat(keep=year p1 p99);
by year;
if x;
run;

data want;
 set r_air;
 if p1<=air<=p99;
run;
Ask a Question
Discussion stats
  • 4 replies
  • 367 views
  • 6 likes
  • 4 in conversation