看板 R_Language 關於我們 聯絡資訊
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
cywhale: 可以把周次鑑起來 比如week() 再利用周次當ID合併 09/20 12:52
a181w: i<-1 09/20 19:15
a181w: while(i<=nrow(data)){ 09/20 19:15
a181w: if(is.na(data[,8]))data[i,8:12]=data[i-1,8:12] 09/20 19:15
a181w: i<-i+1 09/20 19:15
a181w: } 09/20 19:15
a181w: 我直覺會用迴圈寫 只是速度不快…… 09/20 19:16
clansoda: 最快的方法用data.table 09/20 19:24
bluecadence: 我的回答沒有針對你的問題回。但我覺得比較容易的方 09/20 19:25
clansoda: 跟cywhale大說的一樣,你要把周變成一個column 09/20 19:25
clansoda: 假設week已經是column了 09/20 19:26
bluecadence: 法,是將你的 daily time series 先轉成 xts 格式 09/20 19:26
clansoda: dt[, Otw := first(Otw), by = week] 09/20 19:27
bluecadence: 然後用 quantmod 套件裡面的 to.weekly() 函數 把 09/20 19:27
clansoda: 一行結束而且大概跑個半秒吧假如你的資料量不大 09/20 19:27
bluecadence: daily data 轉成 weekly data。日子會比較好過 09/20 19:30
bluecadence: 你也很容易可以轉成 monthly 用 to.monthly() 09/20 19:30
bluecadence: 可以參考 to.period() 這個函數 09/20 19:34
bluecadence: 抱歉是 xts 套件 09/20 19:35
s3714443: 感謝各位大大寶貴的意見 感恩! 09/20 19:35
s3714443: 用week()做出新col是很棒的方法,但是碰到小問題就是 09/20 19:36
s3714443: 20000129 20000201 這函數把他算在第五個禮拜 我很疑惑 09/20 19:37
s3714443: 這兩個應該是不同禮拜的 09/20 19:37
cywhale: 同樣在lubridate下還有isoweek() 這兩個日期出來是不同週 09/20 19:57
s3714443: 可問強者大大兩者差異嗎?套件說明看很久參透不出來XD 09/20 20:26
s3714443: 自問自答,isoweek會考慮閏年XD 09/20 20:27
s3714443: 不過我是用上週的周資料填入本週日資料,碰到年假gg QQ 09/21 00:26