BookmarkSubscribeRSS Feed
nismail1976
Fluorite | Level 6

Hello everyone,

I have a string variable called part4 that looks something like:

part4.PNG

 

   

 

I am trying to extract the first 24 characters starting from right hand side moving toward the left, how can I accomplish that?

Thanks

4 REPLIES 4
ballardw
Super User

or

extract= substr(x, length(x)-24+1);

 

I did 24 + 1 incase you need to change the 24 based on a variable value.

 

If you have 10 characters and want 4, 10-4=6, but character positions 6,7,8,9 and 10 = 5 characters, so add 1.

 

This will not work if you ask for more characters than exist though.

PGStats
Opal | Level 21

I think this will always work:

 

extract= right(subpad(x, max(1, length(x)-24+1), 24));

PG
ShiroAmada
Lapis Lazuli | Level 10

Try this....

 

 

data want;
  set have;
Latest24months = ifc(length(text)>24,substrn(text,length(text)-23), text);

LATETS24MONTHS_2= ifc(length(text)<=24,TEXT, substrn(text,length(text)-23));

IF LATEST24MONTHS = LATEST24MONTHS_2 THEN TAG=1; run;

 

Choose between latest24months or latest24months_2.  Tag is used to check if both will provide the same result.

 

Hope this helps.

CFC_SAS_Communities_400x225.jpg

Call for content now open!

It's your turn to help shape SAS Innovate 2027. Share your expertise and inspire the SAS community.

Submit your proposal →

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