【问题标题】:how to load from a CSV file with multiple symbols containing OHLCV using getSymbols and date in YYYYMMDD如何使用 YYYYMMDD 中的 getSymbols 和日期从包含 OHLCV 的多个符号的 CSV 文件中加载
【发布时间】:2016-11-07 02:06:22
【问题描述】:

我对 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() 来绘制图表。有人可以帮忙吗?

【问题讨论】:

  • 你不需要使用getSymbols()来使用chart_Series()。将 xts 对象与 chart_Series 一起使用。 as.Date(...) #没用是什么意思?您是否要创建 xts 对象?如果您以与您的问题相关的更友好格式提供了一组最小数据(例如 data.frame(time = c('20161023', "20150502"), x = c(2, 3))),那么有人可能会快速提供解决方案。
  • 实际上,我设法找到了使用 ...data$Date

标签: csv xts quantmod


【解决方案1】:

使用您的示例数据,这是一种可能的解决方案来导入文件、转换 Date 列、按 Symbol 拆分文件并以一种简单的方式排列单个对象(股票):

原始文件数据的首尾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

让我们从转换日期列开始:

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

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 2018-11-25
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多