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

How can I use a data step to create a count unique by ID and category. I want the same count to remain for non unique values. Please see example attached and the wanted counts. Thanks

1 ACCEPTED SOLUTION

Accepted Solutions
novinosrin
Tourmaline | Level 20

data have;
input (ID	CATEGORY) ($);*		WANTED COUNT;
cards;
001	PIG		1
001	PIG		1
003	SHEEP		1
003	PIG		2
003	PIG		2
004	SHEEP		1
004	SHEEP		1
005	PIG		1
005	PIG		1
005	COW		2
005	SHEEP		3
;

data want;
 set have;
 by id category notsorted;
 if first.id then count=1;
 else if first.category then count+1;
run;

View solution in original post

3 REPLIES 3
novinosrin
Tourmaline | Level 20

data have;
input (ID	CATEGORY) ($);*		WANTED COUNT;
cards;
001	PIG		1
001	PIG		1
003	SHEEP		1
003	PIG		2
003	PIG		2
004	SHEEP		1
004	SHEEP		1
005	PIG		1
005	PIG		1
005	COW		2
005	SHEEP		3
;

data want;
 set have;
 by id category notsorted;
 if first.id then count=1;
 else if first.category then count+1;
run;
RichardDeVen
Barite | Level 11

Presuming the data is grouped into contiguous blocks the syntax BY var1 var2 NOTSORTED; can be used.  This assumption is made because group 5 is not sorted in alphabetical order.

 

data have; input
ID  CATEGORY $  wanted; datalines;
001  PIG        1
001  PIG        1
003  SHEEP      1
003  PIG        2
003  PIG        2
004  SHEEP      1
004  SHEEP      1
005  PIG        1
005  PIG        1
005  COW        2
005  SHEEP      3
;

data want;
  set have;
  by id category notsorted;
  if first.id then seq=0;
  if first.category then seq+1;
run;

 

Output

RichardADeVenezia_0-1606322652894.png

 

angel2
Calcite | Level 5

Thank you so much - that's perfect!

SAS Innovate 2025: Register Now

Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
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
  • 3 replies
  • 1109 views
  • 5 likes
  • 3 in conversation