有没有人知道如何在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
答案 0 :(得分:0)
直接使用条件逻辑而不是滞后函数。
创建另一个带有滞后函数的变量,只要该值没有丢失。
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;
输出:
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;