Hi, In my "HAVE" dataset, if "var1" is not in the string "not_in", I'd like to tag it as "Y", as in the the "WANT" dataset.
I need help to produce my "WANT" dataset.
data have;
input var1 $ not_in $;
cards;
A A,B,C
D A,B,C
E B,D,A
;
run;
Thus, for the first row, since A is in A,B,C, then I'd like its not_in_flg to be "N".
For the second row, since D is not in A,B,C, then is not_in_flg is to be "Y".
data want;
input var1 $ not_in $ not_in_flg $;
cards;
A A,B,C N
D A,B,C Y
E B,D,A N
;
run;
data have;
input var1 $ not_in $;
not_in_flg = ifc(index(not_in, trim(var1)), 'N', 'Y');
cards;
A A,B,C
D A,B,C
E B,D,A
;
proc print; run;
The last row of your example is wrong.
Is your data always a single character? If not use FINDW or INDEXW to search for a word and return it. Make sure to look at the later parameters for those functions to set them to ignore case or use UPCASE/LOWCASE to make everything the same case.
Hi,
Use find function.
data have;
input var1 $ not_in $;
If FIND(not_in,STRIP(var1),'i')=0 then flag="Y";
ELSE Flag="N";
cards;
A A,B,C
D A,B,C
E B,D,A
;
run;
data want;
set have;
if findw(not_in, var1," ,","ti") then notInFlg = "N";
else notInFlg = "Y";
run;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.