使用Read.zoo读取时间序列表

使用Read.zoo读取时间序列表,r,time-series,zoo,R,Time Series,Zoo,我已经找遍了所有的地方,但是我找不到以前在哪里问过这个问题 什么是一个干净的方法,使这些数据进入一个适当的动物园系列?此版本是一个复制/粘贴版本,以使此文章更容易,但它将始终以下表形式提供(来自文本文件)。我的read.zoo()语句将年份读取为索引,但季度(Qtr1、Qtr2等)读取为列名。我一直在试图找到一种非垃圾的方法来读取列作为索引的“四分之一”部分,但这太草率了(太草率了,无法发布)。我猜这个问题已经解决了,但我找不到 > texinp <- " + Year Q

我已经找遍了所有的地方,但是我找不到以前在哪里问过这个问题

什么是一个干净的方法,使这些数据进入一个适当的动物园系列?此版本是一个复制/粘贴版本,以使此文章更容易,但它将始终以下表形式提供(来自文本文件)。我的read.zoo()语句将年份读取为索引,但季度(Qtr1、Qtr2等)读取为列名。我一直在试图找到一种非垃圾的方法来读取列作为索引的“四分之一”部分,但这太草率了(太草率了,无法发布)。我猜这个问题已经解决了,但我找不到

> texinp <- "   
+ Year   Qtr1  Qtr2  Qtr3  Qtr4   
+ 1992    566   443   329   341   
+ 1993    344   212   133   112   
+ 1994    252   252   199   207"   
> z <- read.zoo(textConnection(texinp), header=TRUE)
> z  

read.zoo
假设您的数据最多有一个时间索引列,所以您必须自己处理。首先使用
read.table

zt <- read.table( textConnection( texinp ), header = TRUE)
最后创建所需的
zoo
对象:

z <- with( zt.m, zoo( value, as.yearqtr(paste(Year, Qtr), format = '%Y Qtr%q')))

> z
1992 Q1 1992 Q2 1992 Q3 1992 Q4 1993 Q1 1993 Q2 1993 Q3 1993 Q4 1994 Q1 1994 Q2 
    566     443     329     341     344     212     133     112     252     252 
1994 Q3 1994 Q4 
    199     207 
z
1992年第一季度1992年第二季度1992年第三季度1992年第四季度1993年第一季度1993年第三季度1993年第四季度1994年第一季度1994年第二季度
566     443     329     341     344     212     133     112     252     252 
1994年第3季度1994年第4季度
199     207 

使用
Read.zoo
读取数据,然后将其转换为
zooreg
对象,并使用
yearqtr
时间索引:

texinp <- "Year   Qtr1  Qtr2  Qtr3  Qtr4   
1992    566   443   329   341   
1993    344   212   133   112   
1994    252   252   199   207"

library(zoo)

z <- read.zoo(text = texinp, header=TRUE)
zz <- zooreg(c(t(z)), start = yearqtr(start(z)), freq = 4)

从t(coredata(z))到c(t(coredata(z))的这一步真是令人惊讶。从matrix()语句来看,它不应该是,但它是。注意,由于Bill的注释
c(t(coredata(z))
已被编辑,将其缩短为
c(t(z))
。这对于melt()函数文档来说是一个非常好的例子。我开始走这条路,但我的zt版本是zt
z <- with( zt.m, zoo( value, as.yearqtr(paste(Year, Qtr), format = '%Y Qtr%q')))

> z
1992 Q1 1992 Q2 1992 Q3 1992 Q4 1993 Q1 1993 Q2 1993 Q3 1993 Q4 1994 Q1 1994 Q2 
    566     443     329     341     344     212     133     112     252     252 
1994 Q3 1994 Q4 
    199     207 
texinp <- "Year   Qtr1  Qtr2  Qtr3  Qtr4   
1992    566   443   329   341   
1993    344   212   133   112   
1994    252   252   199   207"

library(zoo)

z <- read.zoo(text = texinp, header=TRUE)
zz <- zooreg(c(t(z)), start = yearqtr(start(z)), freq = 4)
> zz

1992 Q1 1992 Q2 1992 Q3 1992 Q4 1993 Q1 1993 Q2 1993 Q3 1993 Q4 1994 Q1 1994 Q2 1994 Q3 1994 Q4 
    566     443     329     341     344     212     133     112     252     252     199     207