2013-01-10 87 views
2

日期和时间作为索引I具有以下文件read.zoo与R中

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

欲读取该文件到一个动物园(或XTS)在R.对象时,此文件被创建为XTS对象并使用write.zoo(as.zoo(xts_object), path, sep = "\t")保存,现在我正在尝试使用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)后读取

dput(zoo_object) 
structure(c("2013-01-09T14:30:00.000", "2013-01-09T14:31:00.000", 
"2013-01-09T14:32:00.000", "2013-01-09T14:33:00.000", "2013-01-09T14:34:00.000", 
"110.8500", "110.7950", "110.8290", "110.8268", "110.8400", "110.850", 
"110.814", "110.830", "110.840", "110.840", "110.8000", "110.7950", 
"110.8290", "110.8268", "110.8200", "110.8000", "110.8140", "110.8299", 
"110.8360", "110.8200", "57", " 2", " 5", " 8", "33", "32059", 
" 1088", " 967", " 2834", " 6400"), .Dim = c(5L, 7L), .Dimnames = list(
    NULL, c("time", "open", "high", "low", "close", "numEvents", 
    "volume")), index = structure(c(15714, 15714, 15714, 15714, 
15714), class = "Date"), class = "zoo") 
+0

不'read.zoo'有多列值的'index.column'参数吗?从控制台测试中构建动物园对象太多了,所以无数次:为什么人们不会学习使用'dput'来发布示例? –

+0

对不起,我是R新手,并试图在飞行中学习。我不知道dput会有用。另外,我的问题是关于从文件到动物园对象。当我将它读入计算机时,我已经错过了时间。我也不确定'index.column'是什么,但我现在要去查看它。 – MarkB42

回答

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) 

请注意,我改变了你的格式稍有因为看在编辑器中的文本输出,似乎在用“T”一列的日期之间的分隔符和时间文本。

+0

对不起,我没有原始对象,我无法得到它,因为我无法从我的计算机访问他们的数据。 (这是一个单独的战斗,我正在战斗哈哈)。这就是为什么我正在处理我可以导入的文件。感谢您的帮助,我可以使用'sym_xts < - as.xts(read.zoo(path,sep =“\ t”,header = TRUE,FUN = function(x)as.POSIXct(strptime(x,format =“%Y-%m-%d%H:%M:%S”))))'得到我的原始对象!!!谢谢。 – MarkB42

+1

请注意,如果您未指定“FUN”参数,那么如果您指定时区,例如'tz =“”',那么它假定你想要POSIXct,否则它假定日期。 –

+0

这很酷'sym_xts < - as.xts(read.zoo(path,sep =“\ t”,header = TRUE,tz =“GMT”))''似乎让我获得相同的结果!非常感谢。很有用。 – MarkB42