I have a table where I need a new variable (P_Current) that takes value of the previous value of variable (Current) . The following highlights what I am looking for:
| ID | Current | P_Current |
| 1 | 1 | 1 |
| 2 | 0 | 1 |
| 2 | 1 | 0 |
| 3 | 0 | 1 |
| 4 | 0 | 0 |
| 5 | 1 | 0 |
| 6 | 1 | 1 |
I was trying the following but thats probably not correct
data test2;
set test1;
by ID;
P_Current = lag(Current);
if first.ID then P_Current = Current;
run;
Your output seems to macth this code:
data test2;
set test1;
P_Current = lag(Current);
if _N_=1 then P_Current = Current;
run;
Your output seems to macth this code:
data test2;
set test1;
P_Current = lag(Current);
if _N_=1 then P_Current = Current;
run;
@ChrisNZ's code is working:
data test1;
input ID Current;
datalines;
1 1
2 0
2 1
3 0
4 0
5 1
6 1
;
data test2;
set test1;
P_Current = lag(Current);
if _N_=1 then P_Current = Current;
run;
proc print data=test2 noobs; run;
ID Current P_Current
1 1 1
2 0 1
2 1 0
3 0 1
4 0 0
5 1 0
6 1 1
Please post the code you tried.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.
Ready to level-up your skills? Choose your own adventure.