Hello all,
I am trying to pull a string out from a free text. I was able to use the substring and find function to pull out the specific area around the string. but there are periods marking the end of a sentence that I would like to remove. Not all rows have a period at the end (my assumption would be I could use compress, but then any decimals would be removed as well.
For example:
11.5
12
10.
10.2.
And I would like:
11.5
12
10
10.2
I was thinking maybe I could use the find function to find the second period and then delete? Any suggestions would be much appreciated.
EDIT: My apologies, I forgot to remove the string
Another way
data abc;
input a $;
b=prxchange('s/^(.+?)(\.)*$/$1/', -1,trim(a));
datalines;
10.2
10.2.
10
10.3...
run;
There's no difference in your Have/Want
your example and what you want are same. so you want dot removed at the end of string?
I agree with the other posters, your test data is wrong. One solution:
data want; set have; if char(thestring,lengthn(thestring)-1)="." then thestring=substr(thestring,1,lengthn(thestring)-1); run;
As you haven't provided test data in the form of a datastep I have made up a variable thestring.
Another way
data abc;
input a $;
b=prxchange('s/^(.+?)(\.)*$/$1/', -1,trim(a));
datalines;
10.2
10.2.
10
10.3...
run;
data abc;
input a $;
b=prxchange('s/\.+$//', -1,trim(a));
datalines;
10.2
10.2.
10
10.3...
run;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.
Ready to level-up your skills? Choose your own adventure.