我正在尝试使用设置的条件填充变量。
如果变量数字等于。然后使其等于之前的Number值。
data table2;
set table1;
prv_value = lag(number);
if number = . then number = prv_value;
run;但是,如果一行中有两个值,其中number =。然后第二次出现的值。有之前的number =的值。。
我想要的是找到之前数字不等于的第一个匹配项。并使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 .即,如果number的值为。然后使其等于先前出现的第一个非缺失值。
在某些情况下,在我的数据集中,我可能会:
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 19:30:54
您可以尝试使用retain语句,如下所示(未经测试):
data table2;
set table1;
retain prv_value .;
if number=. then
number=prv_value;
if number ne . then
prv_value=number;
run;https://stackoverflow.com/questions/16145636
复制相似问题