Hi!
I have a value of string variable :
AESOUT
3::4 (this is the value of variable AESOUT)
I need other variables to populate with 'Y' if contains a 3 or a 4
data want;
set have;
if findw(aesout,'3')>0 then AESHOSP='Y';
else AESHOSP='';
if findw(aesout,'4')>0 then AESDISAB='Y';
else AESDISAB='';
...However I am getting null values in the new variables (AESHOSP and AESDISAB) where I am expecting a 'Y'.
Help is appreciated!
try index
data h;
s="3::4";
if index(s,'3')>0 then new_var='yes';
if index(s,'4')>0 then new_var1='yes';
run;
try index
data h;
s="3::4";
if index(s,'3')>0 then new_var='yes';
if index(s,'4')>0 then new_var1='yes';
run;
There are some very good reasons to code Yes/no as numeric 1/0 values.
One is that when asking to compare if value='Y' you might have set some values to lower case y or even spelled it out 'yes' or 'Yes' depending. And then you get into a look at data to check the values.
Second you can always have a custom format to display Yes/No, Y/N, T/F, True/False, Member/Not member or any pair of values without having to change the variable coding.
Third in summary and report procedures a SUM of the variable will give you count of Yes values and Mean is a percent of Yes values. This may not sound like much but generate a table with Number of Yes and Percent Yes that match your expectations with 'Yes' valued variables.
Fourth some modeling procedures may require a numeric variable.
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.