【问题标题】:Recognizing Excel Date formatted column in .csv file as a Date for time series conversion将 .csv 文件中的 Excel 日期格式列识别为时间序列转换的日期
【发布时间】:2017-10-27 12:00:19
【问题描述】:

我已经从雅虎下载了 DJI 历史数据作为 csv 文件,以便在 R 中进行进一步分析。出于好奇,getSymbols("^DJI") 似乎没有用,但我离题了。

关键是我不知道怎么把这个csv文件转成时间序列格式。

这是目前的输出和问题:

> DJI = read.csv("^DJI.csv")
> head(DJI)
       Date    Open    High     Low   Close Adj.Close   Volume
1 1/29/1985 1277.72 1295.49 1266.89 1292.62   1292.62 13560000
2 1/30/1985 1297.37 1305.10 1278.93 1287.88   1287.88 16820000
3 1/31/1985 1283.24 1293.40 1272.64 1286.77   1286.77 14070000
4  2/1/1985 1276.94 1286.11 1269.77 1277.72   1277.72 10980000
5  2/4/1985 1272.08 1294.94 1268.99 1290.08   1290.08 11630000
6  2/5/1985 1294.06 1301.13 1278.60 1285.23   1285.23 13800000
> chartSeries(DJI)
Error in try.xts(x, error = "chartSeries requires an xtsible object") : 
  chartSeries requires an xtsible object

所以{quantmod} 函数chartSerie 正在请求.xts 文件,但DJI 中的Date 列不会立即被识别为这样:

> DJI = as.Date(DJI$Date)
Error in charToDate(x) : 
  character string is not in a standard unambiguous format

在以下答案后编辑:

> head(DJI)
              Open    High     Low   Close Adj.Close   Volume
1985-01-29 1277.72 1295.49 1266.89 1292.62   1292.62 13560000
1985-01-30 1297.37 1305.10 1278.93 1287.88   1287.88 16820000
1985-01-31 1283.24 1293.40 1272.64 1286.77   1286.77 14070000
1985-02-01 1276.94 1286.11 1269.77 1277.72   1277.72 10980000
1985-02-04 1272.08 1294.94 1268.99 1290.08   1290.08 11630000
1985-02-05 1294.06 1301.13 1278.60 1285.23   1285.23 13800000
> is.ts(DJI)
[1] FALSE

【问题讨论】:

  • 试试DJI$Date <- as.Date(DJI$Date,format="%m/%d/%Y")
  • @AndrewGustar 谢谢。在您指示的步骤之后,如何将 csv 文件转换为 xts 文件?
  • 我已将其发布为答案 - 需要更多空间!

标签: r csv time-series xts


【解决方案1】:

要转换日期,您需要 format 声明...

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

quantmod 需要 xts 对象中的日期是行名而不是​​单独的列。因此,您也应该这样做

rownames(DJI) <- DJI$Date
DJI$Date <- NULL #to remove the column

chartSeries(DJI)

【讨论】:

  • 尽管我现在可以生成chartSeries,但请注意对 OP 的编辑,表明最终数据集仍然不是时间序列。有什么建议吗?
  • 试试DJI &lt;- as.xts(DJI)
  • as.ts(DJI) - 取决于您需要什么样的时间序列。
  • 谢谢。有趣的是,如果我在DJI &lt;- as.xts(DJI) 之后运行is.ts(DJI),我会得到FALSExts文件不是ts吗?
  • 是的,我就是这么想的!我认为quantmod 设法将它们强制转换为适当的类型,所以我不确定在这种情况下是否重要。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 2012-06-25
  • 1970-01-01
  • 2021-10-05
相关资源
最近更新 更多