Date: Mon, 16 Apr 2007 16:49:55 -0400
Reply-To: Arthur Tabachneck <art297@NETSCAPE.NET>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Arthur Tabachneck <art297@NETSCAPE.NET>
Subject: Re: looking to create an array
Alison,
Can you supply a data step with a sample of vmitem, along with what you
would like that sample data to look like in all_merge?
Art
--------
On Mon, 16 Apr 2007 13:32:30 -0700, alison <alisontetler@YAHOO.COM> wrote:
>i'm working on a program where i take a dataset that has an id (but in
>present form can have multiples of same id value) and one other
>variable with range 1-21 and transform it into format where i have id
>(no duplicates) and dichotomous variables with yes/no responses for
>all values in range of other variable (ex. id value1 value2 value3 -
>- value21). i know that this can be accomplished easily using an
>array, but am having trouble figuring it out. my code so far is
>below: i am taking the main dataset, keeping the id and one other
>variable, deleting where the other variable ne 1 then outputting into
>a new dataset - doing this for all variable values - then merging them
>back together so that i have complete information for each id on one
>record. any suggestions?
>
>data bev1; set vmitem; keep vendingmachineid bev1; if bev1 ne 1 then
>delete; run;
>proc sort out=bev1a noduplicates; by vendingmachineid; run;
>data bev2; set vmitem; keep vendingmachineid bev2; if bev2 ne 1 then
>delete; run; proc sort out=bev2a noduplicates; by vendingmachineid;
>run;
>data bev3; set vmitem; keep vendingmachineid bev3; if bev3 ne 1 then
>delete; run; proc sort out=bev3a noduplicates; by vendingmachineid;
>run;
>data snk1; set vmitem; keep vendingmachineid snk1; if snk1 ne 1 then
>delete; run; proc sort out=snk1a noduplicates; by vendingmachineid;
>run;
>data snk2; set vmitem; keep vendingmachineid snk2; if snk2 ne 1 then
>delete; run; proc sort out=snk2a noduplicates; by vendingmachineid;
>run;
>data anybev; set vmitem; keep vendingmachineid anybev; if anybev ne 1
>then delete; run; proc sort out=anybeva noduplicates; by
>vendingmachineid; run;
>data anysnack; set vmitem; keep vendingmachineid anysnack; if anysnack
>ne 1 then delete; run; proc sort out=anysnacka noduplicates; by
>vendingmachineid; run;
>
>data merge1; set students; keep vendingmachineid ; run;
>proc sort; by vendingmachineid; run;
>data merge2; merge merge1 (in=in1) bev1a; by vendingmachineid; run;
>data merge3; merge merge2 (in=in1) bev2a; by vendingmachineid; run;
>data merge4; merge merge3 (in=in1) bev3a; by vendingmachineid; run;
>data merge5; merge merge4 (in=in1) snk1a; by vendingmachineid; run;
>data merge6; merge merge5 (in=in1) snk2a; by vendingmachineid; run;
>data merge7; merge merge6 (in=in1) anybeva; by vendingmachineid; run;
>data merge8; merge merge7 (in=in1) anysnacka; by vendingmachineid;
>run;
>data all_merge; set merge8; run; proc sort; by vendingmachineid; run;
|