SAS滞后功能不识别缺失值

SAS滞后功能不识别缺失值,sas,lag,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);

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

   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;
它什么也不做。对于=,这不是问题

我还尝试输出到不同的变量名

我怀疑这是我对滞后函数如何工作的理解不足


有人知道为什么上面的方法不起作用吗?

首先定义滞后变量,然后与缺失进行比较,如果是,则进行替换

data want;
set have;

lagged=lag(var);

if var=. then var=lagged;

run; 

我设法用coalesce函数来回答这个问题

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