Lag Function in Sas for Checking Previous Value

Lag Function in Sas for Checking Previous Value

In SAS, I would like to create a label that check the previous sell indicator: if the sell indicator of the previous time period is 1/0 and in the current is 0/1 (meaning that it has changed) then I assign a value 1 to the ind variable.

The dataset looks like:

Customer  Time Sell_Ind
1          2      1
1          3      0
1          4      0
2          23     0
2          24     0
2          30     0
5          12     1
5          11     0

And so on.

My expected output would be

Customer  Time Sell_Ind   Ind 
    1          2      1    0
    1          3      0    1
    1          4      0    0
    2          23     0    0
    2          24     0    0
    2          30     0    0
    5          12     1    0
    5          11     0    1

The previous/current check is meant by customer.

I have tried as follows

data mydata;
set original;
By customer;
Lag_sell_ind=lag(sell_ind);
If first.customer then Lag_sell_ind=.;
Run;

But it does not return the expected output. In sql I would probably use partition by customer over time but I do not know how to do the same in SAS.

1

2 Answers

You were halfway through, you only need to add one if statement to achieve the desired output.

data want;
set have;
by customer;
lag=lag(sell_ind);
if first.customer then lag=.;
if sell_ind ne lag and lag ne . then ind = 1;
else ind = 0;
drop lag;
run;

You can simplify this using the IFN Function like below.

data have;
input Customer Time Sell_Ind;
datalines;
1 2  1
1 3  0
1 4  0
2 23 0
2 24 0
2 30 0
5 12 1
5 11 0
;

data want;
   set have;
   by customer;  
   Lag_sell_ind = ifn(first.customer, 0, lag(sell_ind));
Run;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Elena Rostova
Author

Elena Rostova

Elena Rostova holds a Master's degree in Public Health Journalism. She covers groundbreaking medical research, holistic wellness trends, mental health awareness, and nutritional science.