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

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;
1 ACCEPTED SOLUTION

Accepted Solutions
Kurt_Bremser
Super User

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;

View solution in original post

3 REPLIES 3
Kurt_Bremser
Super User

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;
DanielSantos
Barite | Level 11

 

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

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

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
  • 1876 views
  • 0 likes
  • 3 in conversation