read.zoo,日期和时间作为R中的索引

时间:2013-01-10 20:33:35

标签: r xts zoo

我有以下文件

"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)

1 个答案:

答案 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;作为日期和时间文本之间的分隔符。