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

Hello,

I have a string of characters and I need those values in parentheses. 

data title;
input title $20.;
datalines;
National Geography (NG)
Time (T)
National Food and Energy Council (NFC)
Food and Drug Administration (FDA)
National Hockey League (NHL)
National Football League (NFL)
;
run;

The results I want are: 

NG

T

NFC

NHL

NFL

Thanks for the help!

1 ACCEPTED SOLUTION

Accepted Solutions
Astounding
PROC Star

This takes the first set of characters in parentheses, and doesn't consider whether there might be other sets of parentheses:

 

newvar = scan(oldvar, 2, '()');

View solution in original post

5 REPLIES 5
FredrikE
Rhodochrosite | Level 12

If they always are at the end this is a quicky:

 

newTitle = compress(reverse(scan(reverse(title),1)),'()');

 

Untested, but should work 🙂

//Fredrik

daisy6
Quartz | Level 8

Thanks for reply. It works !

Astounding
PROC Star

This takes the first set of characters in parentheses, and doesn't consider whether there might be other sets of parentheses:

 

newvar = scan(oldvar, 2, '()');

daisy6
Quartz | Level 8

Thanks for that! It works!

Ksharp
Super User
data title;
input title $40.;
if findc(title,')','b')=length(title) then want=scan(title,-1,'() ') ;
datalines;
National Geography (NG)
Time (T)
National Food and Energy Council (NFC)
Food and Drug Administration (FDA)
National Hockey League (NHL)
National Football League (NFL)
;
run;

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
  • 5 replies
  • 12893 views
  • 2 likes
  • 4 in conversation