LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (June 2005, week 2)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:   Wed, 8 Jun 2005 20:46:41 +0000
Reply-To:   toby dunn <tobydunn@HOTMAIL.COM>
Sender:   "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:   toby dunn <tobydunn@HOTMAIL.COM>
Subject:   Re: Thee level by group "lag"
Comments:   To: mjm33@MSM1.BYU.EDU
In-Reply-To:   <200506082023.j58KNx7V012843@listserv.cc.uga.edu>
Content-Type:   text/plain; format=flowed

Micheal,

I would gladly do this problem the way you have ut set up with only my wits.

As your have your dataset up it is easy to do what you want with a lag or retain statement. Could you give a better dataset that more closely emulates your actual dataset.

As it stands now you only need to sort for insurance purposes and use the lag statement.

Toby Dunn

From: Michael Murff <mjm33@MSM1.BYU.EDU> Reply-To: Michael Murff <mjm33@MSM1.BYU.EDU> To: SAS-L@LISTSERV.UGA.EDU Subject: Thee level by group "lag" Date: Wed, 8 Jun 2005 14:23:33 -0600 Hi SAS L,

I have quarterly data that is organized within three by groups: id, year, quarter. There are multiple instances of the same quarter but these records have additional unique information (they are not duplicates). I am trying to get information from the previous quarter within a given id. I need to copy this forward in the spirit of a lag. So if I'm in 1990 q4 then I want the value (if it exists) of DATE2 from 1989 q4 to be copied forward into a new var called lastQ .

Obs ID DATE1 DATE2 year qtr lastQ

1 00109210 02JUN1988 23JUN1989 1989 4 .

2 00109210 16NOV1988 23JUN1989 1989 4 .

3 00109210 28JUL1988 23JUN1989 1989 4 .

4 00109210 11JUL1988 23JUN1989 1989 4 .

5 00109210 02JUN1988 23JUN1989 1989 4 .

6 00109210 16AUG1988 23JUN1989 1989 4 .

7 00109210 23NOV1988 23JUN1989 1989 4 .

8 00109210 22MAR1989 23JUN1989 1989 4 .

9 00109210 16MAY1990 08AUG1991 1990 1 23JUN1989

10 00109210 18APR1990 08AUG1991 1990 1 23JUN1989

11 00109210 09APR1990 08AUG1991 1990 1 23JUN1989

12 00109210 18JUL1990 08AUG1991 1990 1 23JUN1989

I have tried this task the lag function in concert with first. and last. flags and I don't believe lag() is well suited for this problem. Lag looks to the previous record, where I want to look to the previous instance of the inner-most by group (qtr) within an instance of the outermost by group (id). I understand that retain can be used in place of lag. Any ideas would be much appreciated.

Many thanks in advance,

Michael Murff

Provo, UT

PS-I pity the job applicant that must do this on the hiring manager's laptop during the interview with nothing but his wits.


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