DATA Step, Macro, Functions and more

How can I evaluate a variable to create other if the if function does not allow the like operator?

Accepted Solution Solved
Reply
Contributor
Posts: 43
Accepted Solution

How can I evaluate a variable to create other if the if function does not allow the like operator?

How can I evaluate a variable to create another if the if function does not allow the like operator?

 

For example is easy if var is numeric, like:

IF VAR1 = 0 THEN VAR2 = 'A';

 

But if I need to evaluate something inside string of characters how can it be?

some like:

IF VAR1 LIKE "%A%" THEN VAR2 = "CONTAINS LETTER A"

 

What operator can I replace to LIKE?


Accepted Solutions
Solution
‎03-22-2017 01:09 PM
PROC Star
Posts: 7,467

Re: How can I evaluate a variable to create other if the if function does not allow the like operato

Posted in reply to Angel_Saenz

Either the INDEX or FINDC functions.

 

Art, CEO, AnalystFinder.com

 

View solution in original post


All Replies
Solution
‎03-22-2017 01:09 PM
PROC Star
Posts: 7,467

Re: How can I evaluate a variable to create other if the if function does not allow the like operato

Posted in reply to Angel_Saenz

Either the INDEX or FINDC functions.

 

Art, CEO, AnalystFinder.com

 

Contributor
Posts: 43

Re: How can I evaluate a variable to create other if the if function does not allow the like operato

thank you Art, and do you know how can I do it like a evaluate a list?

 

I know this does not work but is only an example:

IF VAR1 IN ('%A%','%B%','%C%') THEN VAR2  = 'CONTAINS LETTERS A B or C'

 

If I use this works:

IF INDEX(VAR1,'A') THEN VAR2 = 'CONTAINS LETTERS A B or C'

IF INDEX(VAR1,'B') THEN VAR2 = 'CONTAINS LETTERS A B or C'

IF INDEX(VAR1,'C') THEN VAR2 = 'CONTAINS LETTERS A B or C'

But is it possible to simplify it?

 

I simplified like this:

IF INDEX(VAR1,'A') or INDEX(VAR1,'B') or INDEX(VAR1,'C') THEN VAR2 = 'CONTAINS LETTERS A B or C'

but is there another way tah you know more shorten? some like:

IF INDEX(VAR1,'A','B','C') THEN VAR2 = 'CONTAINS LETTERS A B or C'

 

Thanks

Trusted Advisor
Posts: 1,137

Re: How can I evaluate a variable to create other if the if function does not allow the like operato

Posted in reply to Angel_Saenz

Please try

 

if prxmatch('m/[abc]/i',VAR1) then VAR2="CONTAINS LETTER A or B or C";
Thanks,
Jag
Trusted Advisor
Posts: 1,137

Re: How can I evaluate a variable to create other if the if function does not allow the like operato

Posted in reply to Angel_Saenz

alternatively we could try the perl regular expression like below

 

if prxmatch('m/[a]/i',VAR1) then VAR2="CONTAINS LETTER A";
Thanks,
Jag
PROC Star
Posts: 7,467

Re: How can I evaluate a variable to create other if the if function does not allow the like operato

Posted in reply to Jagadishkatam

the findc function allows you to both find if a string contains one or more of the variables in a list, as well as ignore case (if desired). e.g.:

data want;
informat string $23.;
input string &;
if findc(string, 'abc', "i") then
want='Contains A, B or C';
datalines;
Microsoft Office Visio
Microsoft Office Word
Adobe Photoshop
Adobe PhotoshopPro
Internet Explorer
;

Art, CEO, AnalystFinder.com 

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 5 replies
  • 166 views
  • 2 likes
  • 3 in conversation