2011-01-17 14 views
4

私はその場所全体を見渡しましたが、この質問が以前に聞かれた場所を見つけることができません。read.zooを使用して時系列表を読み取る

このデータを適切な動物園シリーズに取得するにはどうすればよいですか?このバージョンは、この投稿を簡単にするためのコピー/ペーストですが、常に次の表形式(テキストファイルから)で表示されます。私のread.zoo()ステートメントは、インデックスとして年を読み取りますが、四半期(Qtr1、Qtr2など)は列名として読み込まれます。私はインデックスの "四半期"の部分として列を読むために非ゴミの方法を理解しようとしてきましたが、(投稿するにはあまりにも控えめです。私はこの問題が既に解決されていると思っていますが、私はそれを見つけることができません。 as.yearqtr()のドキュメントから

> 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 

、ターゲットは次のようになります。

1992 Q1 1992 Q2 1992 Q3 1992 Q4 1993 Q1 1993 Q2 1993 Q3 1993 Q4  
    566  443  329  341  344  212  133  112  

1994 Q1 1994 Q2 1994 Q3 1994 Q4  
    252  252  199  207  

答えて

3

read.zooを使用してデータを読み込み、のzooregオブジェクトに変換します時間インデックスは:

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 
+0

t(coredata(z))からc(t(coredata(z))までのステップ)は本当に驚きでした。それはmatrix()ステートメントからではありませんでしたが、それはそうでした。 –

+1

Billのコメント 'c(t(coredata(z))'は 'c(t(z))'に短縮するように編集されていることに注意してください。 –

3

read.zooあなたのデータは多くても1つの時間インデックス列で持っているので、あなたはこれを自分で処理する必要が想定しています。まずreshapeパッケージからmelt機能を使用して、「長いテーブル」に変換し、その後read.table

zt <- read.table(textConnection(texinp), header = TRUE) 

を使用してそれを読む:

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 
:最後に

require(reshape) 
zt.m <- melt(zt, id = 'Year', variable_name = 'Qtr') 

> zt.m 
    Year Qtr value 
1 1992 Qtr1 566 
2 1993 Qtr1 344 
3 1994 Qtr1 252 
4 1992 Qtr2 443 
5 1993 Qtr2 212 
6 1994 Qtr2 252 
7 1992 Qtr3 329 
8 1993 Qtr3 133 
9 1994 Qtr3 199 
10 1992 Qtr4 341 
11 1993 Qtr4 112 
12 1994 Qtr4 207 

と、ご希望のzooオブジェクトを作成します

+0

。私はこの道を始めましたが、私のバージョンのztはzt <-read.zoo()でした。それはきれいに終わらなかった。 –

関連する問題