我有以下文件
"Index" "time" "open" "high" "low" "close" "numEvents" "volume"
2013-01-09 14:30:00 "2013-01-09T14:30:00.000" "110.8500" "110.8500" "110.8000" "110.8000" " 57" "32059"
2013-01-09 14:31:00 "2013-01-09T14:31:00.000" "110.7950" "110.8140" "110.7950" "110.8140" " 2" " 1088"
2013-01-09 14:32:00 "2013-01-09T14:32:00.000" "110.8290" "110.8300" "110.8290" "110.8299" " 5" " 967"
2013-01-09 14:33:00 "2013-01-09T14:33:00.000" "110.8268" "110.8400" "110.8268" "110.8360" " 8" " 2834"
2013-01-09 14:34:00 "2013-01-09T14:34:00.000" "110.8400" "110.8400" "110.8200" "110.8200" " 33" " 6400"
我想将此文件读入R中的zoo(或xts)对象。此文件创建为xts对象并使用write.zoo(as.zoo(xts_object), path, sep = "\t")
保存,现在我尝试使用{{1}进行读取}。但是,我收到以下警告
zoo_object <- read.zoo(path, sep = "\t", header=TRUE, format="%Y-%m-%d %H:%M:%S")
当我在控制台中键入Warning message:
In zoo(rval3, ix) :
some methods for “zoo” objects do not work if the index entries in ‘order.by’ are not unique
以显示其内容时,我得到:
zoo_object
您可以在其中看到时间未包含在行索引中。我假设我可以将时间字段转换为索引并修复我的问题,但我也认为我在阅读此文件(或者可能是写作)时做错了,但是在搜索了一整天后我不知道是什么。任何人都可以提供任何见解吗?
阅读后 time open high low close numEvents volume
2013-01-09 2013-01-09T14:30:00.000 110.8500 110.850 110.8000 110.8000 57 32059
2013-01-09 2013-01-09T14:31:00.000 110.7950 110.814 110.7950 110.8140 2 1088
2013-01-09 2013-01-09T14:32:00.000 110.8290 110.830 110.8290 110.8299 5 967
2013-01-09 2013-01-09T14:33:00.000 110.8268 110.840 110.8268 110.8360 8 2834
2013-01-09 2013-01-09T14:34:00.000 110.8400 110.840 110.8200 110.8200 33 6400
dput(zoo_object)
答案 0 :(得分:4)
(请注意,测试所需的对象是传递给write.zoo的对象,而不是最终对象。)
默认情况下(显示)read.zoo
使用的日期时间函数为as.Date
,而我猜测它会是as.POSIXct
。您可以使用以下方法强制执行所需的行为:
zoo_object <- read.zoo("~/test", index.column=2, sep = "\t",
header=TRUE, format="%Y-%m-%dT%H:%M:%S", FUN=as.POSIXct)
请注意,我稍微更改了您的格式,因为在编辑器中查看文本输出,看起来这是一个带有&#34; T&#34;作为日期和时间文本之间的分隔符。