How to drop cases that does not contain any of the given strings of characters delivered through a local macro?
data test;
input id $ b c $ d e $ f;
datalines;
AAA 50 11 1 222 22
BBB 35 12 2 250 25
CCC 75 13 3 990 99
;
run;
proc contents data=test out=vars(keep=name type) noprint; run;
%let rvar = "id", "b";
%let rvar1 = "c", "d", "e", "f";
data vars;
set vars;
if name NOT in (&rvar); *Of course this line will not work;
*if name in (&rvar1);
/*IT works if I set 'rvar' accordingly.
Though, this can be an option, thre are so many variables
to consider for my data set under this condition; */
run;
Exisiting data;
Desired data:
Should be simple. The meaning of a subsetting if IF statement is that if the condition is NOT met then the data step loop stops. So
if condition ;
is the same as
if NOT condition then DELETE;
So in your case you want
if name NOT in (&rvar) then delete;
Should be simple. The meaning of a subsetting if IF statement is that if the condition is NOT met then the data step loop stops. So
if condition ;
is the same as
if NOT condition then DELETE;
So in your case you want
if name NOT in (&rvar) then delete;
Ah! The real problem is being a newbie in SAS. I just could have used:
if name in (&rvar) then delete;
@Tom Thanks for your edit and answer Tom.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.
Find more tutorials on the SAS Users YouTube channel.