[問題] 周資料與日資料的合併、填滿NA

看板R_Language作者 (metalheads)時間6年前 (2017/09/20 12:41), 編輯推噓3(3024)
留言27則, 5人參與, 最新討論串1/1
https://imgur.com/a/sNZtc 各位好,小弟碰到一個問題 因為我想要同時判定周資料與日資料的技術指標 所以把它們用left_join弄再一起,也成功了 目前有一個問題,我想要如圖示那樣填滿na值 就是本週的日資料,都填入上週的周資料 不知道該怎麼解決呢QQ 感謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.171.102.251 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1505882508.A.2F7.html

09/20 12:52, , 1F
可以把周次鑑起來 比如week() 再利用周次當ID合併
09/20 12:52, 1F

09/20 19:15, , 2F
i<-1
09/20 19:15, 2F

09/20 19:15, , 3F
while(i<=nrow(data)){
09/20 19:15, 3F

09/20 19:15, , 4F
if(is.na(data[,8]))data[i,8:12]=data[i-1,8:12]
09/20 19:15, 4F

09/20 19:15, , 5F
i<-i+1
09/20 19:15, 5F

09/20 19:15, , 6F
}
09/20 19:15, 6F

09/20 19:16, , 7F
我直覺會用迴圈寫 只是速度不快……
09/20 19:16, 7F

09/20 19:24, , 8F
最快的方法用data.table
09/20 19:24, 8F

09/20 19:25, , 9F
我的回答沒有針對你的問題回。但我覺得比較容易的方
09/20 19:25, 9F

09/20 19:25, , 10F
跟cywhale大說的一樣,你要把周變成一個column
09/20 19:25, 10F

09/20 19:26, , 11F
假設week已經是column了
09/20 19:26, 11F

09/20 19:26, , 12F
法,是將你的 daily time series 先轉成 xts 格式
09/20 19:26, 12F

09/20 19:27, , 13F
dt[, Otw := first(Otw), by = week]
09/20 19:27, 13F

09/20 19:27, , 14F
然後用 quantmod 套件裡面的 to.weekly() 函數 把
09/20 19:27, 14F

09/20 19:27, , 15F
一行結束而且大概跑個半秒吧假如你的資料量不大
09/20 19:27, 15F

09/20 19:30, , 16F
daily data 轉成 weekly data。日子會比較好過
09/20 19:30, 16F

09/20 19:30, , 17F
你也很容易可以轉成 monthly 用 to.monthly()
09/20 19:30, 17F

09/20 19:34, , 18F
可以參考 to.period() 這個函數
09/20 19:34, 18F

09/20 19:35, , 19F
抱歉是 xts 套件
09/20 19:35, 19F

09/20 19:35, , 20F
感謝各位大大寶貴的意見 感恩!
09/20 19:35, 20F

09/20 19:36, , 21F
用week()做出新col是很棒的方法,但是碰到小問題就是
09/20 19:36, 21F

09/20 19:37, , 22F
20000129 20000201 這函數把他算在第五個禮拜 我很疑惑
09/20 19:37, 22F

09/20 19:37, , 23F
這兩個應該是不同禮拜的
09/20 19:37, 23F

09/20 19:57, , 24F
同樣在lubridate下還有isoweek() 這兩個日期出來是不同週
09/20 19:57, 24F

09/20 20:26, , 25F
可問強者大大兩者差異嗎?套件說明看很久參透不出來XD
09/20 20:26, 25F

09/20 20:27, , 26F
自問自答,isoweek會考慮閏年XD
09/20 20:27, 26F

09/21 00:26, , 27F
不過我是用上週的周資料填入本週日資料,碰到年假gg QQ
09/21 00:26, 27F
文章代碼(AID): #1PmV6CBt (R_Language)