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.
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.