wildcard characters in if/then

Accepted Solution Solved
Reply
Contributor
Posts: 25
Accepted Solution

wildcard characters in if/then

Hi, I'd like to use "wildcards" in an if/then statement, and am wondering if I'm correct in thinking the "%" sign is the wildcard for any character (including numbers that are "type"-ed as "character" and not "numeric" entries).  In particular, I'm trying to do the following.  I have a dataset A, that looks something like this:

patient          blah          other variables

Joe              aaaa21xy          .....

Bob              aaaa34zq          .....

Tom              rsbq76zv          .....

 

From which I want to create a dataset B, containing all patients for which the "blah" variable begins with the characters "aaaa" (and can have any characters after this).  In othe words, dataset B would looks like this:

patient          blah          other variables

Joe              aaaa21xy          .....

Bob              aaaa34zq          .....

 

I tried & failed to do this with the following if/then statement:

data datasetB; set datasetA;
if blah='aaaa%%%%' then output;
run;

 

I've also tried to use "____" or ":", instead of the "%%%%", and these didn't work either (outputs are all empty datasets).  Thanks in advance for your help!


Accepted Solutions
Solution
‎02-11-2016 05:59 PM
Super Contributor
Posts: 275

Re: wildcard characters in if/then

[ Edited ]

There are some great differences between if and where .  Here is one case.

where blah like 'aaaa%';

or

if blah=:'aaaa';

 

 

View solution in original post


All Replies
Solution
‎02-11-2016 05:59 PM
Super Contributor
Posts: 275

Re: wildcard characters in if/then

[ Edited ]

There are some great differences between if and where .  Here is one case.

where blah like 'aaaa%';

or

if blah=:'aaaa';

 

 

Contributor
Posts: 25

Re: wildcard characters in if/then

Thank you!

Super User
Posts: 5,372

Re: wildcard characters in if/then

 A couple of additional notes that might be useful ...

 

=: does not mean "begins with".  It means make the comparison based on whichever string has the shorter length.  Ignore any characters beyond that length in the longer string.  So these comparisons are identical:

 

if blah =: 'aaaaa';

if 'aaaaa' =: blah;

 

Also, you can use =: with the IN operator, with strings of different length:

 

if blah in ('aaaaa', 'abc', 'bb');

 

Good luck.

☑ This topic is solved.

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

Discussion stats
  • 3 replies
  • 506 views
  • 0 likes
  • 3 in conversation