2013-10-26 24 views
1

目前我有以下xts表。試圖瞭解如何計算滯後在xts對象

 AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted 
2013-09-09 505.00 507.92 503.48  506.17 12116200  506.17 
2013-09-10 506.20 507.45 489.50  494.64 26490200  494.64 
2013-09-11 467.01 473.69 464.81  467.71 32031600  467.71 
2013-09-12 468.50 475.40 466.01  472.69 14409400  472.69 
2013-09-13 469.34 471.83 464.70  464.90 10649000  464.90 
... 

我可以使用quantmod包來計算百分比變化Delt(AA[,"AAPL.Adjusted"],k=1)不過我是新來的R和想知道如何做到這一點不帶包,而不是使用某種形式的for循環。我想這會是像lag(k/k-1)-1?謝謝。

回答

1

我想通了從XTS封裝PDF在線,

AA$AAPL.change2<-AA[,"AAPL.Adjusted"]/lag(AA[,"AAPL.Adjusted"], k=1, na.pad = TRUE)-1

什麼讓我感到困惑的是如何區分電流與滯後,但事實證明這只是調用對象是不夠的,換句話說如果對象是x,那麼如果你想要用滯後1來分割電流,那麼它的正好是x/lag(x,k = 1) - 這可能是顯而易見的,但對於新手來說它確實很酷;)

1

另一種選擇是使用ROC

s <- get(getSymbols('AMZN') 
s$pct <- ROC(Ad(s),1) 
head(s) 
      AMZN.Open AMZN.High AMZN.Low AMZN.Close AMZN.Volume AMZN.Adjusted   pct 
2007-01-03  38.68  39.06 38.05  38.70 12405100   38.70   NA 
2007-01-04  38.59  39.14 38.26  38.90  6318400   38.90 0.005154651 
2007-01-05  38.72  38.79 37.60  38.37  6619700   38.37 -0.013718346 
2007-01-08  38.22  38.31 37.17  37.50  6783000   37.50 -0.022934971 
2007-01-09  37.60  38.06 37.34  37.78  5703000   37.78 0.007438929 
2007-01-10  37.49  37.70 37.07  37.15  6527500   37.15 -0.016816091