LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous (more recent) messageNext (less recent) messagePrevious (more recent) in topicNext (less recent) in topicPrevious (more recent) by same authorNext (less recent) by same authorPrevious page (June 2009, week 4)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Thu, 25 Jun 2009 06:20:57 -0700
Reply-To:     Amar Mundankar <amarmundankar@GMAIL.COM>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         Amar Mundankar <amarmundankar@GMAIL.COM>
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 <RamsamyAsh...@gmail.com> 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