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

Hi all, 

I thought this question would be easy but I can't seem to find the answer. 

Say I have data like below:

4red

56blue

118white 

20022orange 

 

And I would like to add a space after the numeric portion so my data looks likes this:

4 red

56 blue

118 white 

20022 orange

 

How could I achieve this? 

1 ACCEPTED SOLUTION

Accepted Solutions
maguiremq
SAS Super FREQ
data have;
input var :$25.;
datalines;
4red
56blue
118white
20022orange
;
run;

data want;
	set have;
	f = catx(" ", compress(var, , 'kd'), compress(var, , 'ka'));
run;

If length is an issue, make sure to use a LENGTH statement before the CATX statement.

maguiremq_0-1652361338122.png

 

View solution in original post

6 REPLIES 6
PaigeMiller
Diamond | Level 26

If the numbers are always integers (are they?) then you can use the NOTDIGIT function

 

data want;
    set have;
    length newtext $ 24;
    where=notdigit(text);
    newtext=substr(text,1,where-1)||' '||substr(text,where);
run;
--
Paige Miller
luvscandy27
Quartz | Level 8

Unfortunately, the whole string is character. 

PaigeMiller
Diamond | Level 26

@luvscandy27 wrote:

Unfortunately, the whole string is character. 


That's not what I meant by "integer". In your examples

 

4red

56blue

118white 

20022orange 

 

all of the digits turn into integers. There are no non-integers such as

 

20.333orange

--
Paige Miller
maguiremq
SAS Super FREQ
data have;
input var :$25.;
datalines;
4red
56blue
118white
20022orange
;
run;

data want;
	set have;
	f = catx(" ", compress(var, , 'kd'), compress(var, , 'ka'));
run;

If length is an issue, make sure to use a LENGTH statement before the CATX statement.

maguiremq_0-1652361338122.png

 

andreas_lds
Jade | Level 19

Won't work with values like "111green222", but only @luvscandy27 knows whether values with multiple numbers exist.

Ksharp
Super User
data have;
input var :$25.;
datalines;
4red
56blue
118white
20022orange
;
run;

data want;
	set have;
	want = prxchange('s/(\d+)/\1 /',1,var);
run;

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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