2010-08-01 55 views
3

我使用R中的transform()函數創建了具有新變量的時間序列對象,並且無法找到合適的函數來計算今天和昨天之間的變量C的差異。在R中生成新的時滯變量

這是我到目前爲止有:

    O  H  L  C Typical Range 
2010-07-23 1092.17 1103.73 1087.88 1102.66 1098.090 15.85 
2010-07-26 1102.89 1115.01 1101.30 1115.01 1110.440 13.71 
2010-07-27 1117.36 1120.95 1109.78 1113.84 1114.857 11.17 
2010-07-28 1112.84 1114.66 1103.11 1106.13 1107.967 11.55 
2010-07-29 1108.07 1115.90 1092.82 1101.53 1103.417 23.08 
2010-07-30 1098.44 1106.44 1088.01 1101.60 1098.683 18.43 

下一行會與下面的函數中添加:

SPX <- transform(SPX, Return = (C - C(yesterday))/C(yesterday))) 

顯然,C(昨天)不正確。我試過lag(),diff(),還沒有找到正確的組合。

紅利問題:你如何獲得Typical變量只顯示給hundreth?

回答

3

如果您正試圖計算今天和昨天之間的C差異,則正確的函數是diff。

> SPX$Return <- diff(SPX$C) 
> SPX 
       O  H  L  C Typical Range Return 
2010-07-23 1092.17 1103.73 1087.88 1102.66 1098.090 15.85  NA 
2010-07-26 1102.89 1115.01 1101.30 1115.01 1110.440 13.71 12.35 
2010-07-27 1117.36 1120.95 1109.78 1113.84 1114.857 11.17 -1.17 
2010-07-28 1112.84 1114.66 1103.11 1106.13 1107.967 11.55 -7.71 
2010-07-29 1108.07 1115.90 1092.82 1101.53 1103.417 23.08 -4.60 
2010-07-30 1098.44 1106.44 1088.01 1101.60 1098.683 18.43 0.07 

但它看起來像你要計算的變化率,而不是,您可以從TTR的ROC函數來完成。

> SPX$Return <- ROC(SPX$C) 
> SPX 
       O  H  L  C Typical Range  Return 
2010-07-23 1092.17 1103.73 1087.88 1102.66 1098.090 15.85   NA 
2010-07-26 1102.89 1115.01 1101.30 1115.01 1110.440 13.71 1.113793e-02 
2010-07-27 1117.36 1120.95 1109.78 1113.84 1114.857 11.17 -1.049869e-03 
2010-07-28 1112.84 1114.66 1103.11 1106.13 1107.967 11.55 -6.946068e-03 
2010-07-29 1108.07 1115.90 1092.82 1101.53 1103.417 23.08 -4.167314e-03 
2010-07-30 1098.44 1106.44 1088.01 1101.60 1098.683 18.43 6.354596e-05 
+0

謝謝Josh,我從來沒有聽說過ROC()。尼斯。我正在與來自quantmod的Delt()搞混,它似乎是做同樣的事情,但遇到了與diff()相同的問題,如下所示: 錯誤'$ < - 。data.frame '('* tmp *',「Diff」,value = c(1.74000000000001,: 替換有900行,數據有901 但是ROC工作正常。嗯。 – Milktrader 2010-08-01 03:15:31

+2

澄清一點:我上面的例子使用了一個xt這個錯誤可能是因爲Delt和diff不包括你正在使用的對象類的前導NA(一個data.frame?) – 2010-08-01 03:20:22

+0

做了一個str(SPX)後,它確實說了data.frame。 ,這是很奇怪的,因爲我以前使用quantmod來下載數據,但是我做了很多改變,所以我丟失了我的歷史文件的一部分,所以我不記得了。 ough。我會再試一次,確保我有一個xts對象 – Milktrader 2010-08-01 03:28:26