使用R修改xts中子集数据范围的值

时间:2017-01-04 11:46:37

标签: r xts

我正在使用quantmod并使用getSymbols下载股票的价值。我发现源本身的数据在一系列日期中是不正确的。不幸的是谷歌没有这些数据。

stock <- 'RELIANCE.BO'
getSymbols(stock)
stockAdjusted <- adjustOHLC(RELIANCE.BO, adjust = c("split","dividend"), use.Adjusted = FALSE, ratio = NULL)
stockAdjusted <- stockAdjusted[!(apply(stockAdjusted, 1, function(y) any(y == 0))),]

2008-07-29至2008-08-14的价格是应有的价格的一半。如何更正此日期范围的值?

1 个答案:

答案 0 :(得分:0)

您可以使用[的常规索引来访问给定日期范围和列的数据。例如,要获得2008-07-29至2008-08-14日期范围的RELIANCE.BO.Adjusted列,您只需写下:

stockAdjusted["2008-07-29/2008-08-14", "RELIANCE.BO.Adjusted"] 
##            RELIANCE.BO.Adjusted
## 2008-07-29             961.0422
## 2008-07-30             996.9914
## 2008-07-31            1016.8096
## 2008-08-01            1059.9302
## 2008-08-04            1033.5398
## 2008-08-05            1048.9796
## 2008-08-06            1058.1328
## 2008-08-07            1046.8594
## 2008-08-08            1037.1992
## 2008-08-11            1072.0240
## 2008-08-12            1079.5088
## 2008-08-13            1078.8912
## 2008-08-14            1048.6570

与数据框一样,您也可以使用索引进行分配。要将列RELIANCE.BO.Adjusted仅在请求的日期范围内乘以2,您可以执行以下操作:

stockAdjusted["2008-07-29/2008-08-14", "RELIANCE.BO.Adjusted"] <- stockAdjusted["2008-07-29/2008-08-14", "RELIANCE.BO.Adjusted"] * 2