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
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;
Lag is correct methodology. Post your code that didn't work.
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.
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;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.