BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
cphd
Obsidian | Level 7

Hi all, 

 

I have a dataset looks like below. I want to keep the observations with the highest number in "count" variable by county and year. 

 

County       year       Count

20001       2008           1

20001       2008           2

20001       2008           3

20001       2006           1

20002       2008           1

20002       2008           2

 

The outcome that I want has to look like... 

County       year      Count

20001       2008           3

20001       2006           1

20002       2008           2

 

proc sort data=rc out=rc_dup nodupkey;
	by county year;
run;
1 ACCEPTED SOLUTION
2 REPLIES 2
novinosrin
Tourmaline | Level 20

1. SORT approach would require 2 sorts:

data have;
input County       year       Count;
cards;
20001       2008           1
20001       2008           2
20001       2008           3
20001       2006           1
20002       2008           1
20002       2008           2
;

proc sort data=have out=temp;
by county year descending count;
run;

proc sort data=temp out=want nodupkey;
by county year;
run;

2.

data have;
input County       year       Count;
cards;
20001       2008           1
20001       2008           2
20001       2008           3
20001       2006           1
20002       2008           1
20002       2008           2
;

data want;
 set have;
 by county year notsorted;
 if last.year;
run;

Assuming your dataset order is what it is as shown in your sample, you would need a NOTSORTED option in the BY statement in your datastep

 

3. Proc SQL grouped filter using HAVING clause


proc sql;
create table want as
select *
from have
group by county,year
having count=max(count);
quit;

 

SAS Innovate 2025: Register Today!

 

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

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