DATA Step, Macro, Functions and more

addition lag operator

Accepted Solution Solved
Reply
Contributor
Posts: 36
Accepted Solution

addition lag operator

I have the following dataset. 

 

 

data input;
input trans_yearmon 8. rv_acct 5.2  factor 8.2   ;
datalines;
201506 0.21 
201507       -0.62
201508       1.65
201509       0.09
201510       0.28
;
run;

I want rv_act to be = lag(rv_act) + factor.
So the new dataset should look as follows -

 

 

 

  B C D E
1   rv_acct factor rv_acct_formula
2 201506 0.21    
3 201507 -$0.41 -$0.62 C3 = C2 + D3
4 201508 $1.24 $1.65 C4 = C3 + D4
5 201509 $1.33 $0.09 C5 = C4 + D5
6 201510 $1.61 $0.28 C6 = C5 + D6

 

Can you kindly tell me how to do it in SAS ? I was using 'lag operator' but that was not helpful ..  

 

-Rajat


Accepted Solutions
Solution
‎07-19-2016 09:22 AM
Super User
Posts: 10,018

Re: addition lag operator

Posted in reply to rajat051984
data input;
input trans_yearmon  rv_acct  factor   ;
datalines;
201506 0.21  .
201507   .    -0.62
201508  .     1.65
201509    .   0.09
201510   .    0.28
;
run;
data want;
 set input;
 retain lag;
 if _n_=1 then lag=rv_acct ;
  else do;
   rv_acct=lag+factor;lag=rv_acct;
  end;
drop lag;
run;

View solution in original post


All Replies
Super User
Posts: 19,768

Re: addition lag operator

Posted in reply to rajat051984

Lag is correct methodology. Post your code that didn't work. 

Super User
Posts: 19,768

Re: addition lag operator

Posted in reply to rajat051984

Sorry, just use retain. 

 

Retain rv_acct;

 

rv_account+factor;

 

This should be a new variable in the dataset otherwise you might get unexpected results. 

Solution
‎07-19-2016 09:22 AM
Super User
Posts: 10,018

Re: addition lag operator

Posted in reply to rajat051984
data input;
input trans_yearmon  rv_acct  factor   ;
datalines;
201506 0.21  .
201507   .    -0.62
201508  .     1.65
201509    .   0.09
201510   .    0.28
;
run;
data want;
 set input;
 retain lag;
 if _n_=1 then lag=rv_acct ;
  else do;
   rv_acct=lag+factor;lag=rv_acct;
  end;
drop lag;
run;
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 243 views
  • 2 likes
  • 3 in conversation