DATA Step, Macro, Functions and more

TOP 10 Records in a group

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 13
Accepted Solution

TOP 10 Records in a group

Can any explain me how to filter top n rows in a particular group. for example for Each zone , top 10 locations need to be filtered.

 


Accepted Solutions
Solution
‎06-08-2016 04:51 AM
Super User
Posts: 6,936

Re: TOP 10 Records in a group

Sort by zone and the selection criteria (descending).

Then do;

data want;
set have;
by zone;
retain counter;
if first.zone
then counter = 1;
else counter + 1;
if counter le 10;
drop counter;
run;
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers

View solution in original post


All Replies
Solution
‎06-08-2016 04:51 AM
Super User
Posts: 6,936

Re: TOP 10 Records in a group

Sort by zone and the selection criteria (descending).

Then do;

data want;
set have;
by zone;
retain counter;
if first.zone
then counter = 1;
else counter + 1;
if counter le 10;
drop counter;
run;
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Trusted Advisor
Posts: 1,128

Re: TOP 10 Records in a group

Hi Aarathi,

 

Alternatively, you could try do loops as below, i took the example of shoes dataset. Hope this helps.

 

proc sort data=sashelp.shoes out=shoes;
by region descending stores ;
run;

data shoes_;
i=0;
do until(last.region);
set shoes;
by region descending stores ;
i+1;
if i <=10 then 
output;
end;
run;
Thanks,
Jag
☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 280 views
  • 0 likes
  • 3 in conversation