如何从动物园的2列读取日期时间?

时间:2014-02-10 15:18:06

标签: r time-series zoo

我有一个包含分钟汇率的csv文件

<TICKER>,<DTYYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
EURUSD,20110103,000000,1.3353,1.3354,1.3353,1.3354,4
EURUSD,20110103,000100,1.3355,1.3356,1.3355,1.3356,4
EURUSD,20110103,000200,1.3355,1.3356,1.3350,1.3350,4
EURUSD,20110103,000300,1.3349,1.3349,1.3348,1.3348,4
EURUSD,20110103,000400,1.3347,1.3348,1.3347,1.3348,4
...

尝试在下面做但不适合我。如何从2列读取日期时间?

rate <- read.zoo("data.csv",sep=",",tz="",header=T, format='%Y%m%d %H%M%S', index = 2:3)

以上代码生成错误:index has 5 bad entries at data rows: 1 2 3 4 5

1 个答案:

答案 0 :(得分:3)

您需要指定colClasses以保持第三列的前导零,并删除第一列(因为您不能在zoo对象中同时包含数字和字符)。请注意,如果指定了多个索引列,则默认操作是将它们粘贴在一起,并在它们之间留一个空格。

Lines <- "<TICKER>,<DTYYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>
EURUSD,20110103,000000,1.3353,1.3354,1.3353,1.3354,4
EURUSD,20110103,000100,1.3355,1.3356,1.3355,1.3356,4
EURUSD,20110103,000200,1.3355,1.3356,1.3350,1.3350,4
EURUSD,20110103,000300,1.3349,1.3349,1.3348,1.3348,4
EURUSD,20110103,000400,1.3347,1.3348,1.3347,1.3348,4
"

rate <- read.zoo(text=Lines, sep=",", header=TRUE, 
  index.column=1:2, format="%Y%m%d %H%M%S", tz="", 
  colClasses = rep(c("NULL", "character", "numeric"), c(1, 2, 5)))

修改:简化。