我有这个代码,我想识别缺少值的行,然后用变量的前一个值替换变量(因为该变量也总是空白)
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;
它什么都不做。这不是=的问题。
我也尝试输出到另一个变量名。
我怀疑这是我对滞后函数如何工作的理解缺乏的。
任何人都知道为什么以上不起作用?
答案 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)