Date: Tue, 8 Apr 2008 22:26:39 -0400
Reply-To: "Howard Schreier <hs AT dc-sug DOT org>"
<schreier.junk.mail@GMAIL.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: "Howard Schreier <hs AT dc-sug DOT org>"
<schreier.junk.mail@GMAIL.COM>
Subject: Re: Simple LAG Data Step
On Tue, 8 Apr 2008 16:41:43 -0500, Tom White <tw2@MAIL.COM> wrote:
>Hi everyone,
>
>The following problem looks like a simple LAG issue.
>It doesn't work for me when I do a BY PROV_ID.
>
>I wish to create the DIFF variable as shown below.
>
>Thank you.
>T
>
>
>
>PROV_ID ID MYDATE
>01 111111111 24Feb2003
>01 111111111 24Feb2003
>01 111111111 24Feb2003
>01 111111111 24Feb2003
>
>02 222222222 24Sep2004
>02 333333333 07Sep2003
>
>03 444444444 10Jul2003
>03 444444444 03May2004
>03 444444444 07Dec2005
>
>
>PROV_ID ID MYDATE DIFF
>01 111111111 24Feb2003 .
>01 111111111 24Feb2003 0
>01 111111111 24Feb2003 0
>01 111111111 24Feb2003 0
>
>02 222222222 24Sep2004 . /* or 0 doesn't matter*/
>
>02 333333333 07Sep2003 . /* or 0 doesn't matter*/
>
>03 444444444 10Jul2003 .
>03 444444444 03May2004 N1
>03 444444444 07Dec2005 N2
>
>N1= 03May2004 - 10Jul2003
>N2= 07Dec2005 - 03May2004
Since Tom did not present his code and did not define "doesn't work for me",
I'll just start from scratch.
DIF is actually a bit better than LAG here. My preferred solution is
data need;
set have;
by prov_id id mydate;
diff = ifn( first.id , . , dif(mydate) );
run;
|