想象一下日內的一組數據,例如,每小時一次。感謝谷歌和有價值的約書亞給其他人的答案,我設法在xts對象中創建了新的列,其中包含DAILY Open/High/Low/Close值。這些日間值適用於日間間隔,因此同一天的所有行在特定列中都具有相同的值。由於HLC值超前,所以我想把它們移到第二天。我們只關注一個名爲Prev.Day.Close的列。R:如何將xts列落後於集合中的一天
實際狀態: 我的Prev.Day.Close列爲當天設置適當的值。全部「2010-01-01 ??:??」行具有相同的值 - 2010-01-01交易時段關閉。所以目前這個專欄名稱並不是以前的日子。
我需要什麼:
滯後Prev.Day.Close列該組的第二天。
我不能使用lag(),因爲它工作在行(而不是日)的基礎上。它不能是固定的日曆日,例如:
C <- ave(x$Close, .indexday(x), FUN = last)
index(C) <- index(C) + 86400
x$Prev.Day.Close <- C
因爲此解決方案不關心集合中的實際數據。例如,它增加了新的行,因爲原始數據集在週末和假日都有漏洞。而且,兩個特定的日期可能沒有相同數量的間隔(行),所以移位的數據將不適合。
期望的結果:
- 在集合第一天的所有行具有NA在Prev.Day.Close因爲沒有前一天從獲取數據。
- 第二天的所有行在Prev.Day.Close中具有相同的值 - 我在上一天的Prev.Day.Close中實際具有的任何值。
- 每個下一行都一樣。
這正是我想要做的。你的例子清晰易懂。我設法在我的代碼中實現您的解決方案。非常感謝,約書亞。不幸的是,直到一些聲望水平,我無法贊成。 – Dave