DATA Step, Macro, Functions and more

Using scan function to select a part of variable value

Reply
Super Contributor
Posts: 272

Using scan function to select a part of variable value

Dear,

 

I need to have the 'test'value without the charaters in parenthesis. I am using scan function. Is there any better way to get the output. Please suggest. Thank you

 

Output needed:

term1

Urine Choriogonadotropin Beta

 

data one;
input test $ 1-35;
datalines;
Urine Choriogonadotropin Beta (NA)
;
run;
data two;
set one;
term1=scan(test,1,'(');
run;
PROC Star
Posts: 283

Re: Using scan function to select a part of variable value

Posted in reply to knveraraju91

Assuming the characters in paranthesis is at the end of the string in all records if present.

 

data one;

input test $ 1-35;

datalines;

Urine Choriogonadotropin Beta (NA)

;

run;

 

data two;

set one;

substr(test,index(test,'('))=' ';

run;

 

Regards,

Naveen Srinivasan

Respected Advisor
Posts: 4,173

Re: Using scan function to select a part of variable value

Posted in reply to knveraraju91

Or if you need to remove all brackets no matter where they are in the string:

data one;
  input test $ 1-70;
  datalines;
Urine Choriogonadotropin Beta (NA)
Urine Choriogonadotropin Beta (NA) something (something else)
;
run;

data two;
  set one;
  /* create variable term1 with the same length as test */
  if _n_=1 then term1=test;
  /* remove everything in brackets from source string */
  term1=prxchange('s/\s*\([^\)]*\)//o',-1,strip(test));
run;
PROC Star
Posts: 7,492

Re: Using scan function to select a part of variable value

Posted in reply to knveraraju91

You can do it in one data step. e.g.:

 

data one;
  length test $50;
  input @;
  if index(_infile_,'(') gt 0 then
   _infile_=substr(_infile_,1,index(_infile_,'(')-1);
  input test &;
datalines;
Urine Choriogonadotropin Beta (NA)
Urine Choriogonadotropin Alpha
;

Art, CEO, AnalystFinder.com

 

Ask a Question
Discussion stats
  • 3 replies
  • 190 views
  • 3 likes
  • 4 in conversation