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.
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!
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.