【问题标题】:Reading next non-missiong observation's value in current observation在当前观察中读取下一个非缺失观察值
【发布时间】:2015-03-25 13:38:47
【问题描述】:

我的问题与reading next observation's value in current observation 非常相似,只是我想阅读下一个Non-Missing 观察(在 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,salary 的值来自下一个非缺失观察值,即 ID 为 60、6000 的值。

【问题讨论】:

    标签: sas proc


    【解决方案1】:

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

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

    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;
    

    您还可以对数据进行反向排序并使用保留来完成相同的操作。如果你有很多缺失,那可能会更有效。

    【讨论】:

    • 再次感谢!请问你是做什么工作的?
    • 有趣的条件块缩进样式。我喜欢它,不认为我以前注意到过这一点(看到一些人的 DO 与 IF THEN 在同一行,其他人 DO 在单独的行但没有缩进)。缩进 DO 子句然后当然缩进 do 块本身的内容看起来不错。
    • 谢谢。我经常会无意中这样做:我包括then do;,但后来意识到它不需要并删除它。但从理论上讲,这也是我故意缩进的方式。
    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 2017-12-08
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多