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

Modify values of a subset data range in xts using R

我正在使用 quantmod 并使用 getSymbols 下载股票的值。我发现源中的数据本身在某个日期范围内是不正确的。不幸的是,google 中没有数据。

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 的价格是应有价格的一半。如何更正此日期范围内的值?

您可以使用 [ 的正常索引来访问给定日期范围和列的数据。例如,要获取日期范围为 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