BookmarkSubscribeRSS Feed
afiqcjohari
Quartz | Level 8
	data want1;
		set have;
		where cPOSMode in ('07','90');
	run;
	data want2;
		set have;
		where cPOSMode in ('02') 
			and cToken is not null
			and cPvder is not null
			and idTReq is not null;
	run;
       
        data want1; set want1 want2;run;

How do I simplify above 3 data steps into 1?

4 REPLIES 4
Reeza
Super User

Combine WHERE clauses into 1 step using an OR

afiqcjohari
Quartz | Level 8
data want;
set have;
where cPOSMode in ('07','90') or (cPOSMode in ('02') and cToken is not null and cPvder is not null and idTReq is not null);
;run;
Reeza
Super User

@afiqcjohari wrote:
data want;
set have;
where cPOSMode in ('07','90') or (cPOSMode in ('02') and cToken is not null and cPvder is not null and idTReq is not null);
;run;

? 

RW9
Diamond | Level 26 RW9
Diamond | Level 26
data want;
  set have;
  if cposmode in ('07','90') or
     cposmode='02 and (ctoken ne "" and cpvder ne "" and idtreq ne "") then output;
run; 

Note, I assume the three varaibles are character as you don't say.  Also, use one casing for your code, mixing casing makes code harder to read.

CFC_SAS_Communities_400x225.jpg

Call for content now open!

It's your turn to help shape SAS Innovate 2027. Share your expertise and inspire the SAS community.

Submit your proposal →

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 2762 views
  • 0 likes
  • 3 in conversation