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

Hi, I am using SAS 9.3.

Does anyone have suggestions to resolve the following issue?

Now, I have one variable recorded as: Birthday Sex Height Weight

and the expected result is: Birthday, Sex, Height, Weight

 

JC

1 ACCEPTED SOLUTION

Accepted Solutions
Ksharp
Super User
data x;
x='Birthday Sex Height Weight';
y=prxchange('s/\s+/, /',-1,strip(x));
run;
proc print;run;

View solution in original post

5 REPLIES 5
gamotte
Rhodochrosite | Level 12
Hello,

if I understand correctly, you have a variable, say INFO that takes values such as "02/12 M 60 120" and you would like to have four distinct variables.
Then you can use the scan function

birthday=scan(INFO,1," ");
sex=scan(INFO,2," ");
...

Ksharp
Super User
data x;
x='Birthday Sex Height Weight';
y=prxchange('s/\s+/, /',-1,strip(x));
run;
proc print;run;
JohnChen_TW
Quartz | Level 8

It works. Thank for your help!

 

Is 's/\s+/,/' fixed?

Can I use PRXCHANGE in macro? Perhaps, %let a=%sysfunc(prxchange('s/\s+/,/',-1,strip(x))); ?

 

JC

 

Ksharp
Super User

Yes.I add a white blank after comma.

 

 %let x=sex weight height;
 %let a=%sysfunc(prxchange(%str(s/\s+/, /),-1,&x)); 
 
 %put &a ;

 

 

JohnChen_TW
Quartz | Level 8
It works!!!!
Thank you very much!!!!

JC
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
  • 1673 views
  • 2 likes
  • 3 in conversation