我有一个包含分钟汇率的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
答案 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)))
修改:简化。