I have the following date rows:
VAR1
This is row 1 (row1)
This is row 2 (I think) (row2)
(row3.)
And I need it to look like this:
row1
row2
row3
Basically I need to trim the string into the text in between the last parenthesis. Can anyone help with code to perform this?
How about
data have;
input VAR1 $ 1-50;
datalines;
This is row 1 (row1)
This is row 2 (I think) (row2)
(row3.)
;
data want;
if _N_=1 then r = prxparse('/\(([^)]*)\)[^(]*$/');
set have;
if prxmatch(r, VAR1) then var2 = prxposn(r, 1, VAR1);
retain r;
drop r;
run;
Result:
VAR1 var2 This is row 1 (row1) row1 This is row 2 (I think) (row2) row2 (row3.) row3.
data have; input VAR1 $ 1-50; datalines; This is row 1 (row1) This is row 2 (I think) (row2) (row3.) ; data want; set have; if substr(var1,length(var1))=')' then want=scan(var1,-1,'() '); run;
Done with SCAN and COMPRESS:
data have;
input var1 $80.;
datalines;
This is row 1 (row1)
This is row 2 (I think) (row2)
(row3.)
;
data want;
set have;
var2 = compress(scan(var1,-1,"("),").");
run;
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.