SAS滞后功能无识别缺失值

时间:2015-10-07 08:44:03

标签: sas lag

我有这个代码,我想识别缺少值的行,然后用变量的前一个值替换变量(因为该变量也总是空白)

   DATA qfr_channel_split_FY16_SEPT1;
    set qfr_channel_split_FY16_SEPT;
    if order_count=. then do;
    avg_yr1_gm=lag1(avg_yr1_gm);
    avg_yr2_gm=lag1(avg_yr2_gm);
    avg_yr3_gm=lag1(avg_yr3_gm);
    avg_yr4_gm=lag1(avg_yr4_gm);
    avg_yr5_gm=lag1(avg_yr5_gm);
end;
    run;

它什么都不做。这不是=的问题。

我也尝试输出到另一个变量名。

我怀疑这是我对滞后函数如何工作的理解缺乏的。

任何人都知道为什么以上不起作用?

2 个答案:

答案 0 :(得分:0)

首先定义滞后变量,然后比较丢失并替换,如果是的话。

data want;
set have;

lagged=lag(var);

if var=. then var=lagged;

run; 

答案 1 :(得分:0)

我设法用合并功能

回答这个问题
data zeroed (drop=&var. rename=(try=&var.));
set live_sorted;
orig=&var.;
try=coalesce(&var.,lag1(&var.),lag2(&var.),lag3(&var.),lag4(&var.));
run;

这会自动识别变量是否为空并采用最近的滞后(如上所述,最多为4)