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: 39
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,360

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

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,360

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

Either the INDEX or FINDC functions.

 

Art, CEO, AnalystFinder.com

 

Contributor
Posts: 39

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,128

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

Please try

 

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

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

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,360

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

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
  • 141 views
  • 2 likes
  • 3 in conversation