在当前观察中读取下一个非缺失观测值

时间:2015-03-25 13:38:48

标签: sas proc

我的问题与reading next observation's value in current observation完全相似,只是我想阅读下一个非缺失观察(在SAS中)。

例如,这是我的数据集

data have;
   input ID Salary;
   cards;
10 1000
20 .
30 3000
40 .
50 .
60 6000
;
run;

我正在寻找类似的东西

ID Salary
10 1000
20 3000
30 3000
40 6000
50 6000
60 6000

正如你所看到的,对于ID 40,工资从下一个非缺失的观察中得到的值,即ID 60,6000。

1 个答案:

答案 0 :(得分:3)

链接的问题给出了一些建议,其中大部分都可以适应这一点。

例如,可以稍微修改接受的答案。

data want;
  set have;
  if missing(salary) then
    do _i = _n_+1 to nobs;
      set have(keep=salary) nobs=nobs point=_i;
      if not missing(salary) then leave;
    end;
run;

您也可以反向排序数据,并使用retain来完成相同的操作。如果你有很多缺失,那可能会更有效率。