作者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://www.ptt.cc/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
推 imaltar: 04JAN2008的value是不是應該是1? 06/01 21:13
※ 編輯: yellowleaf (111.250.35.26), 06/02/2015 00:04:37
→ yellowleaf: 喔 對 沒錯 多謝提醒!! 06/02 00:05
推 chien533: 你把新資料的value先全部變成0, 再把舊資料merge進來 06/02 06:14
→ chien533: 兩個data step就可以搞定,沒那麼複雜 06/02 06:14
→ yellowleaf: 原來如此 解決了 謝謝C大和I大!! 06/02 11:16