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
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;
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;
@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 @Miracle
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;
thank you all. I appreciate your help.
I tried Proc Rank and it worked.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.