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