2012-05-08 45 views
6

私は、混乱しているファイルで毎時降水量の分析を行っています。しかし、私はそれをクリーンアップし、以下のように形態をとる(CA1と呼ばれる)データフレームに格納する管理:Rの時系列とstl:単変量系列のみが許容されています

H23を介してH0は、一日あたり24時間(行)を表す
Station_ID Guage_Type Lat Long  Date Time_Zone Time_Frame H0 H1 H2 H3 H4 H5  H6  H7  H8  H9  H10  H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 
1 4457700   HI 41.52 124.03 1948-07-01   8  LST 0 0 0 0 0 0 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0 0 0 0 0 0 0 0 0 0 0 0 
2 4457700   HI 41.52 124.03 1948-07-05   8  LST 0 1 1 1 1 1 2.0000000 2.0000000 2.0000000 4.0000000 5.0000000 5.0000000 4 7 1 1 0 0 10 13 5 1 1 3 
3 4457700   HI 41.52 124.03 1948-07-06   8  LST 1 1 1 0 1 1 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0 0 0 0 0 0 0 0 0 0 0 0 
4 4457700   HI 41.52 124.03 1948-07-27   8  LST 3 0 0 0 0 0 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0 0 0 0 0 0 0 0 0 0 0 0 
5 4457700   HI 41.52 124.03 1948-08-01   8  LST 0 0 0 0 0 0 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0 0 0 0 0 0 0 0 0 0 0 0 
6 4457700   HI 41.52 124.03 1948-08-17   8  LST 0 0 0 0 0 0 0.3888889 0.3888889 0.3888889 0.3888889 0.3888889 0.3888889 6 1 0 0 0 0 0 0 0 0 0 0 

を使用します

> dat1[1:48,] 
    H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 2 2 4 5 5 4 7 1 1 0 0 10 13 5 1 1 3 

変数DAT1を使用する:のみCA1(上記データフレーム)は、私はDAT1呼び出し(行)一つの変数に、残り日数24点の各日(行)を取り、垂直に転置と連結します、時系列データを得るために引数として入力します:

> rainCA1 <- ts(dat1, start = c(1900+as.POSIXlt(CA1[1,5])$year, 1+as.POSIXlt(CA1[1,5])$mon), 
    frequency = 24) 

いくつかは注:

>dim(CA1) 
    [1] 5636 31 
>length(dat1) 
    [1] 135264 

したがって5636 * 24(全データ点列ごと[24])= 135264総ポイント。 長さ(rainCA1)は上記の点に同意します。私は、このような

>rainCA1 <- ts(dat1, start = c(1900+as.POSIXlt(CA1[1,5])$year, 1+as.POSIXlt(CA1[1,5])$mon), 
    end = c(1900+as.POSIXlt(CA1[5636,5])$year, 1+as.POSIXlt(CA1[5636,5])$mon), 
    frequency = 24) 

として、TS機能に終止符を打つ場合、私は多くのデータが欠落していますどこただし、私は、ポイントの1134年全体の長さを取得します。これは、日付が連続していないためで、私は開始点の引数として月と年のみを適用していると仮定しています。

継続、私は正しい道だと思うものの中に、エンド引数なしで最初のtsの計算を使用して、私はSTLの入力として、それを供給:

>rainCA1_2 <-stl(rainCA1, "periodic") 

は、残念ながら、私はエラーを取得:

Error in stl(rainCA1, "periodic") : only univariate series are allowed 

これは私が理解していないか、それについてどうやって行くかについてです。しかし、ts関数に戻り、end引数を指定すると、stlはエラーなく正常に動作します。

私は多くのフォーラムで研究しましたが、誰も(または私の理解によれば)時間データのデータ属性を取得するうえでの賢明な解決法はありません。誰かが私を助けることができたら、私はそれを高く評価します。ありがとうございました!

答えて

7

このエラーは、データの形の結果です。試してください> dim(rainCA1);私はそれが> [1] 135264 1のようなものを与えると思う。 rainCA1 <- ts(dat1 ...rainCA1 <- ts(dat1[[1]] ...で置き換えると正常に動作します。

それが正しく行われても、私は不思議です... あなたの最初のビジネスは、一貫したフォーマットのデータを取得することです。 ts()が正しい入力を得ていることを確認してください。 tsの正確な仕様を確認してください。

ts()は、日付/時刻の形式を解釈しません。 ts()には、固定間隔の連続データポイントが必要です。メジャーカウンターとマイナーカウンター(そのうちの1つのメジャーカウンターにはfrequencyが入ります)を使用します。たとえば、データが時間単位であり、季節性が毎日のレベルであると予想される場合、frequencyは24になります。startおよびendは、主に化粧品です。startは、メジャーカウンタでは単にt(0)を示していますが、endはt(終了)を示しています。

0

一つの解決策は、time_series_var <- ts(data[, c("var_of_interest")])、その後time_series_var <- ts(as.vector(time_series_var))してからです単変量に関連するエラーは、現在の寸法が正しいので消えます。

関連する問題