Hi, is there a quick way to substring from the right but skip a few digits.
If I have 2345001 I want to get 2345 .. I want to only remove the last 3 digits... the length of the field is not uniform, soucl be 8 digits or 10 or 9, etc. but th eonly thing sore sure is that I want to remove the last 3 digits.. Thanks
myStr = substr(myStr, 1, length(myStr) - 3);
Another approach in these sorts of situations is to use the substring function with the reverse function
mystr = reverse(substr(strip(reverse(mystr)),4));
Is your variable a number or a character string?
137 data _null_;
138 x=2345001 ;
139 y=int(x/1000);
140 put x= y=;
141 run;
x=2345001 y=2345
The more, the merrier:
data _null_;
mystr="2345001";
new_str=prxchange('s/(^\w+)(\w{3}$)/$1/',-1,strip(mystr));
put mystr= new_str=;
run;
Haikuo
The simpler, the better :smileysilly:
data _null_;
mystr=" 2345001 ";
new_str = prxchange('s/\d{3}\s*$//', 1, mystr);
put mystr= new_str=;
run;
PG
Better indeed!
Haikuo
Might be better use of prxchange, but not exactly readable nor intuitively obvious what the code is doing.
I'd want a comment explaining what was being done and why so that my BAU support junior could understand what the code was doing.
It reads: Replace (s) a succession of exactly 3 ({3}) digits (\d) followed by any amount (*) of white space (\s) and occuring at the end of the string ($) with nothing(//). Do this only once.
PG
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.