質問
私はあちこちを見ていましたが、この質問が以前に尋ねられた場所を見つけることができません。
このデータを適切な動物園シリーズに入れるためのクリーンな方法は何ですか?このバージョンは、この投稿を簡単にするためのコピー/ペーストですが、常に次のテーブル形式(テキストファイルから)に表示されます。私の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
as.yearqtr()ドキュメントから、ターゲットは次のようになります。
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
解決
使用してデータを読み取ります read.zoo
そして、それをaに変換します 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)
結果は次のようになります:
> 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
他のヒント
read.zoo
データにはせいぜい1回のインデックス列があると仮定するので、これを自分で処理する必要があります。最初に使用して読んでください read.table
zt <- read.table( textConnection( texinp ), header = TRUE)
次に、を使用して「長いテーブル」に変換します melt
からの関数 reshape
パッケージ:
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
物体:
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
所属していません StackOverflow