## TOP 10 Records in a group

Solved
Occasional Contributor
Posts: 13

# 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: 10,211

## 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
How to convert datasets to data steps
How to post code

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

## 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
How to convert datasets to data steps
How to post code
Posts: 1,147

## 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 and locked.