我正试图用设置的条件填充一个变量。如何在SAS中找到变量的前一个值
如果变量NUMBER等于。然后使其等于Number的前一个值。
data table2;
set table1;
prv_value = lag(number);
if number = . then number = prv_value;
run;
但是,如果在一行中有两个值其中number =。那么第二次出现的值就是。它是以前的数值=的值。 。
我想要的是找到第一个以前发生的数字不等于。并使数字的值等于先前的非缺失值。
我的数据的一个例子是:
id number
d10 2
d10 2
d10 3
d10 .
d10 .
应用上面的代码,然后我会得到:
id number prv_number
d10 2 .
d10 2 2
d10 3 2
d10 3 3
d10 . .
我想的是:
id number prv_number
d10 2 .
d10 2 2
d10 3 2
d10 3 3
d10 3 .
也就是说,如果数有一个值。然后使其等于第一个以前发生的非缺失值。
在某些情况下,在我的数据集我可能有:
id number
d10 4
d10 2
d10 .
d10 .
d10 .
d10 .
和我想的是:
id number
d10 4
d10 2
d10 2
d10 2
d10 2
d10 2
(注意,我的数据是在事件/时间顺序进行排序,因此想要第一次发生)。
有什么我可以用滞后函数在不同的先前发生次数上做什么,或者其他什么可以做我想做的事情?
埃米尔的答案使用保留是要走的路。对于几乎所有的情况,我都建议不要使用“滞后”函数,因为它的语义臭名昭着,很难识别错误。 – 2013-04-22 16:08:40