Create a variable count that increments for each duplicate variable in a dataset

Accepted Solution Solved
Reply
Contributor
Posts: 25
Accepted Solution

Create a variable count that increments for each duplicate variable in a dataset

[ Edited ]

Hello all,

 

Please can you assist with the following problem? I need to count the number of repeated characters in a dataset for each repeated "char" data.

 

Original data:

NumChar
100060002A
100060004A
100060008A
100060010B
100060013B
100060014B
100060015C
100060020C
100060021D

 

Required output:

NumCharCount
100060002A1
100060004A2
100060008A3
100060010B1
100060013B2
100060014B3
100060015C1
100060020C2
100060021D1

 

Any assitance would be greatly appreciated.

 

My code thus far:

 

DATA TEST;
	SET TEST;
	BY CHAR;
	PUT COUNT 1.;
	
	IF FIRST.CHAR THEN;
	COUNT=0;
	COUNT+1;
RUN;

Accepted Solutions
Solution
‎01-24-2017 04:11 AM
Super User
Posts: 7,758

Re: Create a variable count that increments for each duplicate variable in a dataset

First of all, this is the way to post example data:

data have;
input num char $;
cards;
100060002 A
100060004 A
100060008 A
100060010 B
100060013 B
100060014 B
100060015 C
100060020 C
100060021 D
;
run;

It allows us to recreate your data with a simple copy/paste and run.

Next, your use of the if - then is erroneous. The semicolon immediately after the then causes the conditional statement to end.

This (applied to test data from above) will do it:

data want;
set have;
by char;
if first.char
then count = 1;
else count + 1;
run;
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers

View solution in original post


All Replies
Solution
‎01-24-2017 04:11 AM
Super User
Posts: 7,758

Re: Create a variable count that increments for each duplicate variable in a dataset

First of all, this is the way to post example data:

data have;
input num char $;
cards;
100060002 A
100060004 A
100060008 A
100060010 B
100060013 B
100060014 B
100060015 C
100060020 C
100060021 D
;
run;

It allows us to recreate your data with a simple copy/paste and run.

Next, your use of the if - then is erroneous. The semicolon immediately after the then causes the conditional statement to end.

This (applied to test data from above) will do it:

data want;
set have;
by char;
if first.char
then count = 1;
else count + 1;
run;
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Super Contributor
Posts: 474

Re: Create a variable count that increments for each duplicate variable in a dataset

[ Edited ]

 

Hi, I think you've got it right, just loose the ; after the then

 


DATA TEST;
	SET TEST;
	BY CHAR;
	PUT COUNT 1.;
	
	IF FIRST.CHAR THEN COUNT=0;
	COUNT+1;
RUN;

 

Daniel Santos @ www.cgd.pt

Super User
Posts: 7,758

Re: Create a variable count that increments for each duplicate variable in a dataset

[ Edited ]

Addendum: if the char variable does not come in a strictly ascending sequence, use

by char notsorted;

 

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
☑ This topic is solved.

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

Discussion stats
  • 3 replies
  • 128 views
  • 0 likes
  • 3 in conversation