【发布时间】:2016-02-04 17:25:08
【问题描述】:
我有以下问题:
我想用 proc expand 填充缺失值,只需从下一个数据行中获取值。
我的数据如下所示:
date;index;
29.Jun09;-1693
30.Jun09;-1692
01.Jul09;-1691
02.Jul09;-1690
03.Jul09;-1689
04.Jul09;.
05.Jul09;.
06.Jul09;-1688
07.Jul09;-1687
08.Jul09;-1686
09.Jul09;-1685
10.Jul09;-1684
11.Jul09;.
12.Jul09;.
13.Jul09;-1683
您可以在某些日期看到索引丢失。我想实现以下目标:
date;index;
29.Jun09;-1693
30.Jun09;-1692
01.Jul09;-1691
02.Jul09;-1690
03.Jul09;-1689
04.Jul09;-1688
05.Jul09;-1688
06.Jul09;-1688
07.Jul09;-1687
08.Jul09;-1686
09.Jul09;-1685
10.Jul09;-1684
11.Jul09;-1683
12.Jul09;-1683
13.Jul09;-1683
如您所见,缺失数据的值取自下一行(11.Jul09 和 12Jul09 的值来自 13Jul09)
所以 proc expand 似乎是正确的方法,我开始使用这段代码:
PROC EXPAND DATA=DUMMY
OUT=WORK.DUMMY_TS
FROM = DAY
ALIGN = BEGINNING
METHOD = STEP
OBSERVED = (BEGINNING, BEGINNING);
ID date;
CONVERT index /;
RUN;
QUIT;
这填补了空白,但是从上一行以及我为 ALIGN、OBSERVED 设置的任何内容,甚至对数据进行降序排序,我都没有达到我想要的行为。
如果你知道如何让它正确,如果你能给我一个提示,那就太好了。关于 proc expand 的好论文也很受欢迎。
感谢您的帮助和亲切的问候 斯蒂芬
【问题讨论】:
标签: sas time-series