SAS滞后排除缺失值?

时间:2015-09-25 14:19:32

标签: sas lag

有没有人知道如何在SAS中使用滞后,只考虑变量中最后已知的数字,而不是缺少值,而不是“。”按以下顺序:9,10,8,。,7?

data have;
  input val;
  datalines;
9
10
8
.
7
;
run;

我想要一张包含以下内容的表格:

val  want_val
9    9
10   10
8    8
.    8 
7    7

2 个答案:

答案 0 :(得分:0)

直接使用条件逻辑而不是滞后函数。

  1. 使用滞后函数
  2. 创建滞后变量
  3. 创建另一个带有滞后函数的变量,只要该值没有丢失。

    data have;
    input y;
    cards;
    9 
    10 
    8
    .
    7
    ;
    
    
    data want;
    set have;
    retain x_lag;
    x=lag(y);
    if x ne . then x_lag=x;
    run;
    
    proc print data=want;
    var y x_lag;
    run;
    
  4. 输出:

                                       Obs     y    x_lag
    
                                        1      9       .
                                        2     10       9
                                        3      8      10
                                        4      .       8
                                        5      7       8
    

答案 1 :(得分:0)

这种情况可能是IF语句与LAG一起使用是个好主意。一旦你理解了两个语句如何协同工作,你就可以利用它们(或避免常见的陷阱)。我建议您阅读this了解更多详情。

与此同时,这段代码能做你想做的吗?

data lags;
input num;
if not missing(num) then lag_num = lag(num);
datalines;
9
10
8
.
7
;
run;