🔒 This topic is solved and locked.
Need further help from the community? Please
sign in and ask a new question.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Posted 05-29-2017 10:10 AM
(28810 views)
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:
1 ACCEPTED SOLUTION
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
2 REPLIES 2
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.