Shawn Brar
Shawn Brar

Reputation: 1420

Creating lagged values of a variable

The following is code to create my data set in sas:-

DATA DUMMY;
    INPUT PLACE $ YEAR F CAD WAGE;
    DATALINES;
        Abber 2015 0 0 1000
        Abber 2016 0 0 2000
        Abber 2017 0 0 3000
        Abber 2015 0 1 4000
        Abber 2016 0 1 5000
        Abber 2017 0 1 6000
        Abber 2015 1 0 7000
        Abber 2016 1 0 8000
        Abber 2017 1 0 4000
        Abber 2015 1 1 2000
        Abber 2016 1 1 1000
        Abber 2017 1 1 9000
        NoAbber 2014 0 0 1300
        NoAbber 2015 0 0 1000
        NoAbber 2016 0 0 2000
        NoAbber 2017 0 0 3000
        NoAbber 2014 0 1 2000
        NoAbber 2015 0 1 4000
        NoAbber 2016 0 1 5000
        NoAbber 2017 0 1 6000
        NoAbber 2014 1 0 1500
        NoAbber 2015 1 0 7000
        NoAbber 2016 1 0 8000
        NoAbber 2017 1 0 4000
        NoAbber 2014 1 1 9000
        NoAbber 2015 1 1 2000
        NoAbber 2016 1 1 1000
        NoAbber 2017 1 1 9000
RUN;

So what I wanted to know was if there was a way I could create a variable which has lagged values of the WAGE variable but it should match the values of PLACE, F and CAD. Hence my resulting dataset should look like the following:-

PLACE        YEAR        F        CAD        WAGE        L_Wage
Abber        2015        0        0          1000        .
Abber        2016        0        0          2000        1000
Abber        2017        0        0          3000        2000
Abber        2015        0        1          4000        .
Abber        2016        0        1          5000        4000
Abber        2017        0        1          6000        5000
Abber        2015        1        1          7000        .
Abber        2016        1        1          8000        7000
Abber        2017        1        1          4000        8000
Abber        2015        1        0          2000        .
Abber        2016        1        0          1000        2000
Abber        2017        1        0          9000        1000
NoAbber      2014        0        0          1300        .
NoAbber      2015        0        0          1000        1300
NoAbber      2016        0        0          2000        1000
NoAbber      2017        0        0          3000        2000
NoAbber      2014        0        1          2000        .
NoAbber      2015        0        1          4000        2000
NoAbber      2016        0        1          5000        4000
NoAbber      2017        0        1          6000        5000
NoAbber      2014        1        1          1500        .
NoAbber      2015        1        1          7000        1500
NoAbber      2016        1        1          8000        7000
NoAbber      2017        1        1          4000        4000
NoAbber      2014        1        0          9000        .
NoAbber      2015        1        0          2000        9000
NoAbber      2016        1        0          1000        2000
NoAbber      2017        1        0          9000        1000

Thanks in advance for your help.

Upvotes: 0

Views: 97

Answers (1)

data _null_
data _null_

Reputation: 9109

You need to reset the lag at first.cad

data lag;
   set dummy;
   by PLACE F CAD;
   L_wage = lag(wage);
   if first.cad then call missing(l_wage);
   run;

Upvotes: 2

Related Questions