【发布时间】:2019-08-12 19:14:02
【问题描述】:
我有 3 个变量:ID、天数和温度。对于每个条目,我需要为每个 ID 插入额外的天数行,并且我需要在这些行之间结转温度。
目标是让每个 ID 具有相同温度的完整连续天数。这就是我所拥有的:
ID day temp
1001 68 16
1001 73 14
1002 85 17
1002 89 15
1003 91 18
1004 97 19
1004 99 20
1004 106 12
1005 109 15
1006 111 18
1006 115 19
1006 120 20
1006 122 21
这就是我想要的:
ID day temp
1001 68 16
1001 69 16
1001 70 16
1001 71 16
1001 72 16
1001 73 14
1001 74 14
1001 75 14
1001 76 14
1001 77 14
1001 78 14
1001 79 14
1001 80 14
1001 81 14
1001 82 14
1001 83 14
1001 84 14
1002 85 17
1002 86 17
1002 87 17
1002 88 17
1002 89 15
1002 90 15
1003 91 18
1003 92 18
1003 93 18
1003 94 18
1003 95 18
1003 96 18
1004 97 19
1004 98 19
1004 99 19
proc sort data=have;
by ID;
run;
data want;
set have;
retain temp ID;
day=day +1;
if first.day then temp= temp+0;
end;
run;
我希望结果是这样的:
ID day temp
1001 68 16
1001 69 16
1001 70 16
1001 71 16
1001 72 16
1001 73 14
1001 74 14
1001 75 14
1001 76 14
1001 77 14
1001 78 14
1001 79 14
1001 80 14
1001 81 14
1001 82 14
1001 83 14
1001 84 14
1002 85 17
1002 86 17
1002 87 17
1002 88 17
1002 89 15
1002 90 15
1003 91 18
1003 92 18
1003 93 18
1003 94 18
1003 95 18
1003 96 18
1004 97 19
1004 98 19
1004 99 19
但不知何故,我仍在尝试更改旧数据。任何帮助将不胜感激。谢谢
【问题讨论】:
-
您实际上是在修改记录,而不是在两条记录之间插入多条记录。您也有语法错误。请参阅我的答案,了解实现您想要的一种可能的方法。
-
对于气候数据,假设 LOCF 不适合填补缺失数据。我希望这是一个生成的用例。
-
为什么要将 ID=1001 记录从其最后一个日期扩展到下一个 ID 的第一个日期?那没有意义。身份证是什么意思?