SAS Data Integration Studio, DataFlux Data Management Studio, SAS/ACCESS, SAS Data Loader for Hadoop and others

How to use NOT CONTAIN in data step

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 8
Accepted Solution

How to use NOT CONTAIN in data step

[ Edited ]

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;

Existing data

Desired data:

Screen Shot 2017-05-29 at 9.05.41 AM.png


Accepted Solutions
Solution
‎05-30-2017 12:56 PM
Super User
Super User
Posts: 6,498

Re: How to use NOT CONTAIN in data step

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;

View solution in original post


All Replies
Solution
‎05-30-2017 12:56 PM
Super User
Super User
Posts: 6,498

Re: How to use NOT CONTAIN in data step

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;
Occasional Contributor
Posts: 8

Re: How to use NOT CONTAIN in data step

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.

 

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 260 views
  • 0 likes
  • 2 in conversation