Hi there,
Sorry I am just starting out using SAS. I have been doing some basic data manipulation and cannot seem to find a how-to on using the wildcard function with IF statements.
Here is what I wrote;
data work.cars;
set work.cars;
if displ=>0 and City_MPG=>30 and model^="*hydrid*" then Eff='Yes';
if Model='%Hybrid%' then Eff='Hyb';
run;
I am simply trying to weed out any vehicle models that have Hybrid (non-case sensitive if possible) in their name from my Eff(icient) column. What have I done incorrectly? It isn't giving me errors, but the Hybrid vehicles are not changing to "Hyb", they are just saying "Yes" from my previous IF statement.
Thanks!
use index function for that
if index(LOWCASE(model),'hybrid') then ....
use index function for that
if index(LOWCASE(model),'hybrid') then ....
Hi @wy2sl0,
In string comparisons in the DATA step those "wildcard" characters have no special meaning. They are treated as ordinary characters.
The LIKE condition in PROC SQL, however, uses the percent sign and the underscore (not the asterisk) as wildcard characters. But I haven't seen or used this very often, because there are other tools available, e.g. character functions such as the INDEX function suggested by mohamed_zaki.
In any case you should avoid typos such as "hydrid" when coding string comparisons. (Or did you really mean "hydrid"?)
Total mistake! I am going to try the advice given after dinner thanks you two.
EDIT: It worked perfectly! Thanks so much! This is a very important IF statement I will need to use. Appreciate it!
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.