有谁知道如何使用SAS中的滞后,只考虑变量的最后已知数字,而不是缺少值,即不是“。”。按照以下顺序:9,10,8,...,7?SAS滞后排除缺失值?
data have;
input val;
datalines;
9
10
8
.
7
;
run;
我想的表包含下列:
val want_val
9 9
10 10
8 8
. 8
7 7
有谁知道如何使用SAS中的滞后,只考虑变量的最后已知数字,而不是缺少值,即不是“。”。按照以下顺序:9,10,8,...,7?SAS滞后排除缺失值?
data have;
input val;
datalines;
9
10
8
.
7
;
run;
我想的表包含下列:
val want_val
9 9
10 10
8 8
. 8
7 7
使用条件逻辑,而不是直接滞后功能。
创建另一个变量发生滞后功能仅当值不缺少创建一个滞后变量。
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;
OUTPUT:
Obs y x_lag
1 9 .
2 10 9
3 8 10
4 . 8
5 7 8
这不是SAS编程问题,而是一个关于如何使用SAS过程来转换数据的问题。我建议你在community.sas.com上发布非编程问题。作为一个开始的好地方,请看PROC EXPAND和可能的转换选项。这将允许你实现你的目标。 –
这读起来像一个编程问题的开始。建议您提供样本数据,并描述您想要的输出数据。同时显示您尝试过的任何代码,以及为什么它不起作用。听起来好像你正在试图做“最后的观察结果”而不是简单的滞后。 Google搜索SAS LOCF可以帮助创意。 – Quentin
我不明白这不是一个编程问题......它不是很详细,但它可能比这里的一半问题要好。 – Joe