SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
PhatRam33
Fluorite | Level 6

HI everyone! I've been able to return the first two words of a string and create a third variable with both concatenated.  However, I also want to include special characters that could be included in the words within the string.

 

Here is the code I have so far.  If you notice, the last two lines do not return the special characters within the word and need to do so as such:

 

Appreciate any help on this 😃

 

data input;

input str $60.;

datalines;

 

BLUE

BLUE BLACK

BLUE GREY BROWN

BLUE GREEN RED

BLUE RED YELLOW ORANGE

BLUE$ YELLOW

BLUE/ ORANGE GRAY

;

run;

data test;

set input;

w1 = scan(str, 1);

w2 = scan(str, 2);

length w3 $ 30;

SubStrLength=findc(str, ' ',-length(str));

if SubStrLength=0 then w3=w1;

else w3=trim(catx(' ', w1, w2));

drop SubStrLength;

run;

 

1 ACCEPTED SOLUTION

Accepted Solutions
novinosrin
Tourmaline | Level 20

The below will give you the right split with the spl char. I am sure you can do the concat work yourself as you seem smart.

 

data input;

input str $60.;

datalines;
BLUE
BLUE BLACK
BLUE GREY BROWN
BLUE GREEN RED
BLUE RED YELLOW ORANGE
BLUE$ YELLOW
BLUE/ ORANGE GRAY
;


run;

data test;

set input;

w1 = scan(str, 1,' ','m');

w2 = scan(str, 2,' ','m');run;

View solution in original post

2 REPLIES 2
novinosrin
Tourmaline | Level 20

The below will give you the right split with the spl char. I am sure you can do the concat work yourself as you seem smart.

 

data input;

input str $60.;

datalines;
BLUE
BLUE BLACK
BLUE GREY BROWN
BLUE GREEN RED
BLUE RED YELLOW ORANGE
BLUE$ YELLOW
BLUE/ ORANGE GRAY
;


run;

data test;

set input;

w1 = scan(str, 1,' ','m');

w2 = scan(str, 2,' ','m');run;
PhatRam33
Fluorite | Level 6
Ahh so close! Many thanks! The 'm', is this what includes the special characters? I read somewhere about an M modifier and not sure if this is what this is.

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

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
  • 7829 views
  • 1 like
  • 2 in conversation