作者yellowleaf (Mr.Smile)
看板Statistics
标题[程式] SAS 填满时间序列间距时指定填入值问题
时间Mon Jun 1 17:11:31 2015
[软体程式类别]:
SAS
[程式问题]:
时间序列
[软体熟悉度]:
低(1~3个月)
[问题叙述]:
小弟想要把类似这样的资料
ID DAY value
0001 01JAN2008 1
0001 04JAN2008 1
0001 07JAN2008 1
0002 03JAN2008 1
0002 08JUN2008 1
让SAS以每个ID为分组,自动填满DAY当中的间距,并且新增的值value要是0,变成这样
ID DAY value
0001 01JAN2008 1
0001 02JAN2008 0
0001 03JAN2008 0
0001 04JAN2008 1
0001 05JAN2008 0
0001 06JAN2008 0
0001 07JAN2008 1
0002 03JAN2008 1
(这段省略) (都是0)
0002 08JUN2008 1
我知道这功能在STATA中可以利用tsfill指令後再把遗漏值置换为0来达成,
但爬文和拜估狗大神只找到SAS中有类似的proc expand,
但它会把value也全部都填入1而无法填入0或任何指定值或遗漏值,
不知用什麽方式可以做到我想要的功能呢?
拜谢版上各位高手了!
[程式范例]:
/* 目前只能这样,不知道还有没有我不知道的参数或者其他的proc可用 */
/* 感谢各位大大了! */
proc expand data=DATA01 out=DATA01_new to=day;
by ID;
id DAY;
run;
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.109.122.123
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1433149893.A.3C2.html
※ 编辑: yellowleaf (140.109.122.123), 06/01/2015 17:12:38
※ 编辑: yellowleaf (140.109.122.123), 06/01/2015 17:14:09
1F:推 imaltar: 04JAN2008的value是不是应该是1? 06/01 21:13
※ 编辑: yellowleaf (111.250.35.26), 06/02/2015 00:04:37
2F:→ yellowleaf: 喔 对 没错 多谢提醒!! 06/02 00:05
3F:推 chien533: 你把新资料的value先全部变成0, 再把旧资料merge进来 06/02 06:14
4F:→ chien533: 两个data step就可以搞定,没那麽复杂 06/02 06:14
5F:→ yellowleaf: 原来如此 解决了 谢谢C大和I大!! 06/02 11:16