首页 > 解决方案 > 创建变量的滞后值

问题描述

以下是在 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;

所以我想知道的是,是否有一种方法可以创建一个具有滞后值的变量,WAGE但它应该与 和 的值匹配。因此,我生成的数据集应如下所示:-PLACEFCAD

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

在此先感谢您的帮助。

标签: sas

解决方案


您需要在 first.cad 处重置滞后

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

推荐阅读