R语言 如何使用YYYYMMDD中的getSymbols和date从包含OHLCV的多个符号的CSV文件加载

x6h2sr28  于 2023-04-03  发布在  其他
关注(0)|答案(1)|浏览(87)

我是一个R语言的新手,在这里,我试图读取一个CSV文件,该文件包含多个字符串YYYYMMDD格式的OHLCV和日期符号
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()绘制图表。有人能帮忙吗?

f0brbegy

f0brbegy1#

使用您的示例数据,这是一种可能的解决方案,可以导入文件,转换Date列,按Symbol拆分文件,并以一种简单的方式排列单个对象(股票):
原始文件数据的前3行和后3行(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对象,每个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

相关问题