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

Hello, all:

I have the following variable "organization".   I would like to extract the city and state into different variables.  How to do it?  Please help.  Thanks.

 

YT

 

Organization

Abounding Prosperity (Dallas, TX)

Asian Pacific Islander Coalition on HIV/AIDS (APICHA) (New York, NY)

My Brother’s Keeper (Ridgeland, MS)

 

Organization                                                                                                    Cities                                States

Abounding Prosperity                                                                                      Dallas                                TX

Asian Pacific Islander Coalition on HIV/AIDS (APICHA)                                   New York                          NY

My Brother’s Keeper                                                                                        Ridgeland                         MS

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
ChrisNZ
Tourmaline | Level 20

Like

this?

 

 

data HAVE;
infile cards pad;
input ORGANISATION $80.;
cards;
Abounding Prosperity (Dallas, TX)
Asian Pacific Islander Coalition on HIV/AIDS (APICHA) (New York, NY)
My Brother’s Keeper (Ridgeland, MS)
run;
data WANT;
  set HAVE;
  POS         = find(ORGANISATION,'(',-99);
  CITY        = scan(substr(ORGANISATION,POS+1),1,',');
  STATE       = scan(substr(ORGANISATION,POS+1),2,',)');
  ORGANISATION= substr(ORGANISATION,1,POS-1);
  putlog STATE= CITY= ORGANISATION=;
run;
STATE=TX CITY=Dallas ORGANISATION=Abounding Prosperity
STATE=NY CITY=New York ORGANISATION=Asian Pacific Islander Coalition on HIV/AIDS (APICHA)
STATE=MS CITY=Ridgeland ORGANISATION=My Brother’s Keeper

View solution in original post

2 REPLIES 2
ChrisNZ
Tourmaline | Level 20

Like

this?

 

 

data HAVE;
infile cards pad;
input ORGANISATION $80.;
cards;
Abounding Prosperity (Dallas, TX)
Asian Pacific Islander Coalition on HIV/AIDS (APICHA) (New York, NY)
My Brother’s Keeper (Ridgeland, MS)
run;
data WANT;
  set HAVE;
  POS         = find(ORGANISATION,'(',-99);
  CITY        = scan(substr(ORGANISATION,POS+1),1,',');
  STATE       = scan(substr(ORGANISATION,POS+1),2,',)');
  ORGANISATION= substr(ORGANISATION,1,POS-1);
  putlog STATE= CITY= ORGANISATION=;
run;
STATE=TX CITY=Dallas ORGANISATION=Abounding Prosperity
STATE=NY CITY=New York ORGANISATION=Asian Pacific Islander Coalition on HIV/AIDS (APICHA)
STATE=MS CITY=Ridgeland ORGANISATION=My Brother’s Keeper
ybz12003
Rhodochrosite | Level 12

Thanks, it works.

 

But I think it might be changed the postion to -80 instead of -99, cause the previous input variable "ORGANIZATION" is 80 charaterize.

 

POS = find(ORGANISATION,'(',-80);

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


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