如何使用getSymbols和YYYYMMDD中的日期从包含OHLCV的多个符号的CSV文件加载

时间:2016-07-05 09:36:48

标签: csv xts quantmod

我对R和这里相对较新。我正在尝试读取一个CSV文件,该文件包含多个OHLCV符号和日期字符串YYYYMMDD格式

Data format example

我试过了:

data <- read.csv(file="DFM.csv", sep=",", dec=".", header=TRUE, col.names = c("Symbols", "Date", "Open", "High", "Low", "Close", "Volume"), stringsAsFactors = FALSE)

> class(data)
[1] "data.frame"
> head(data)
  Symbols     Date Open High  Low Close   Volume
1     DIB 20160630 5.03 5.12 5.03  5.11  6171340
2     DIB 20160629 5.10 5.11 5.02  5.02  5241741
3     DIB 20160628 5.05 5.11 5.02  5.07  5258839
4     DIB 20160627 5.01 5.11 5.01  5.03  5038589
5     DIB 20160626 4.94 5.04 4.90  5.02 10593471
6     DIB 20160623 5.14 5.14 5.09  5.12  3069970

as.Date(data$Date, format="%Y%m%d") # didn't work

不知何故,我需要在getSymbols()中加载它,以便我可以使用chart_Series()绘制图表。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

使用您的示例数据,这是导入文件的一种可能解决方案,转换Date列,将文件拆分为Symbol并安排它以图表中的各个对象(股票)一种直截了当的方式:

第一行和最后三行原始文件数据(allStocks):

> both(allStocks)
  Symbol     Date Open High  Low Close   Volme
1    DIB 20160630 5.03 5.12 5.03  5.11 6171340
2    DIB 20160629 5.10 5.11 5.02  5.02 5241741
3    DIB 20160628 5.05 5.11 5.02  5.07 5258839
   Symbol     Date Open High Low Close Volme
16    CBD 20160627  5.6  5.6 5.6   5.6     0
17    CBD 20160626  5.6  5.6 5.6   5.6     0
18    CBD 20160623  5.6  5.6 5.6   5.6     0

让我们从转换Date列开始:

allStocks$Date <- as.Date(as.character(allStocks$Date), format="%Y%m%d")

接下来,将allStocks拆分为Symbol,其中列出了每个列表元素代表名称为Symbol的个别股票的列表:

allStocks <- split(allStocks,allStocks$Symbol)

接下来,摆脱Symbol列以准备xts对象:

allStocks <- lapply(allStocks, function(x) as.xts(x[,3:7],order.by=x[,2]))

最后将列表转换为单独的xts对象,每个对象代表一个名为Symbol的股票:

list2env(allStocks,envir=.GlobalEnv)

您现在应该在GlobalEnvironment中有3个格式正确的对象,可以绘制图表。

即。 str以及最后一行库存DIB

> str(DIB)
An ‘xts’ object on 2016-06-23/2016-06-30 containing:
  Data: num [1:6, 1:5] 5.14 4.94 5.01 5.05 5.1 5.03 5.14 5.04 5.11 5.11 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:5] "Open" "High" "Low" "Close" ...
  Indexed by objects of class: [Date] TZ: UTC
  xts Attributes:  
 NULL

> both(DIB)
           Open High  Low Close    Volme
2016-06-23 5.14 5.14 5.09  5.12  3069970
2016-06-26 4.94 5.04 4.90  5.02 10593471
2016-06-27 5.01 5.11 5.01  5.03  5038539
           Open High  Low Close   Volme
2016-06-28 5.05 5.11 5.02  5.07 5258839
2016-06-29 5.10 5.11 5.02  5.02 5241741
2016-06-30 5.03 5.12 5.03  5.11 6171340