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.
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.