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

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