Date: Sat, 13 May 2006 10:17:21 -0500
Reply-To: Jiann-Shiun Huang <Jiann-Shiun.Huang@AMERUS.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Jiann-Shiun Huang <Jiann-Shiun.Huang@AMERUS.COM>
Subject: Re: Lag Variable creation
Content-Type: text/plain; charset=US-ASCII
Here is another approach: use retain statement.
data temp;
input Id Year var1;
datalines;
1 1999 1000
1 2000 1200
1 2001 1100
2 1998 900
2 1999 800
2 2000 700
;
run;
proc sort data=temp;
by Id year;
run;
data Result;
retain PrevVar1;
set temp;
by Id;
if first.Id then var2=.;
else var2=var1-PrevVar1;
PrevVar1=var1;
drop PrevVar1;
run;
proc print data=Result;
run;
***** OUTPUT *****
The SAS System 09:56
Saturday, May 13, 2006 14
Obs Id Year var1 var2
1 1 1999 1000 .
2 1 2000 1200 200
3 1 2001 1100 -100
4 2 1998 900 .
5 2 1999 800 -100
6 2 2000 700 -100
J S Huang
1-515-557-3987
fax 1-515-557-2422
>>> Rick <rdbisch@GMAIL.COM> 05/13/06 7:20 AM >>>
proc sort data=test; by id year; run;
data test2;
set test;
by id;
var2 = dif(var1);
if first.id then var2=.;
put _ALL_;
run;