SAS Data Management

SAS Data Integration Studio, DataFlux Data Management Studio, SAS/ACCESS, SAS Data Loader for Hadoop, SAS Data Preparation and others
BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
mamun85
Fluorite | Level 6

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;

undefined

Desired data:

undefined

1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

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

2 REPLIES 2
Tom
Super User Tom
Super User

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;
mamun85
Fluorite | Level 6

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.

 

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

Register now!

How to connect to databases in SAS Viya

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.

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