看板 Statistics 關於我們 聯絡資訊
如果按照Kinbee前輩敘述的話, 下面方法請您參考 /*data a*/ data a; input idno yrmon price; cards; 1101 200104 8.2 3018 200201 5.8 ; run; /*data b*/ data b; input idno yrmon vol; cards; 1101 200103 23 3108 200103 16 1101 200106 20 3108 200106 18 1101 200109 22 3108 200109 19 1101 200112 25 3108 200112 15 1101 200203 28 3108 200203 14 ; run; /*排序及合併 (我沒有用date format 不過是一樣的)*/ proc sort data=a; by yrmon; run; proc sort data=b; by yrmon; run; data c; set a b; by yrmon; run; proc print data=c; run; /*新的資料 c*/ data c; set c; /*製造出lag一期的資料*/ vol_lag=lag(vol); /*如果vol為missing的話, 則用lag一期的資料取代*/ if vol=. then vol=vol_lag; drop vol_lag; run; 結果(沒有drop vol_lag時) idno yrmon price vol vol_lag 1 1101 200103 . 23 . 2 3108 200103 . 16 23 3 1101 200104 8.2 16 16 4 1101 200106 . 20 16 5 3108 200106 . 18 20 6 1101 200109 . 22 18 7 3108 200109 . 19 22 8 1101 200112 . 25 19 9 3108 200112 . 15 25 10 3018 200201 5.8 15 15 11 1101 200203 . 28 15 12 3108 200203 . 14 28 這應該可以, 不過資料的開頭要注意一下. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.250.86.244
liton:這樣應該不可以吧... 08/19 02:06
lsshno1:可以跟我說明一下嗎? 謝謝! 08/19 02:07
liton:最後一筆資料 3108 200203請問前一季的vol應該是多少? 08/19 02:10
liton:此外這樣的方法很危險 不認idno 不認yrmon 08/19 02:10
kingbee:感覺這樣會有危險原問題是要認idno符合才抓他上一"季" 08/19 09:31
kingbee:不算是他正上方的那筆 也可能在他上方好幾筆 08/19 09:32
lsshno1:阿, 我想的太簡單了. 我再回去想想 08/20 00:15