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;
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 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.