```Date: Thu, 25 Jun 2009 06:20:57 -0700 Reply-To: Amar Mundankar Sender: "SAS(r) Discussion" From: Amar Mundankar Organization: http://groups.google.com Subject: Re: Split Dataset Comments: To: sas-l@uga.edu Content-Type: text/plain; charset=ISO-8859-1 On Jun 25, 12:22 pm, ash007 wrote: > Hello SasUsers, > > I have a dataset which have a variable named X, this numeric variable > has either '1', '0' or '.'. > > I want to split this dataset in order to have several dataset between > 1 and 0. > > X > . > . > . > 1 > . > . > 0 > 1 > . > . > . > . > 0 > . > . > > I want to have in this case 2 datasets : > > dst_1 > X > 1 > . > . > 0 > > dst_2 > X > 1 > . > . > . > . > 0 > > Thanks. > > Ash007. Hi Ash007, You can try the following code. But for the code below you should initially know that there are only two combinations of 1 and 0 . I mean, you should initially know that you have to create only 2 datasets. I am preparing a macro for the below code which will be independent of the number of combinations. So we dont need to know how many combinations are there. The macro will take care of it. data one ; input x ; cards; . . . 1 . . 0 1 . . . . 0 . . ; data first(drop = flag) second(drop = flag) ; retain flag 0; set one; if x = 1 and flag = 0 then do; output first; flag = 1; return; end; if flag = 1 and (x = 0 or x = .) then do ; output first; if x = 0 then flag = 2; return; end; if x = 1 and flag = 2 then do; output second; flag = 3; return; end; if flag = 3 and (x = 0 or x = .) then do ; output second; if x = 0 then flag = 4; return; end; run; proc print data = first; run; proc print data = second; run; Thanks and Regards, Amar Mundankar. ```

Back to: Top of message | Previous page | Main SAS-L page