2016-07-02 31 views
0

私はちょうどRで始まり、いくつかのチュートリアルを終えました。しかし、私は時系列分析に入ることを試みており、大きな問題を抱えています。私は日半で作業したくなかったのでR:時系列の時系列データを扱うには?

Date  Time  T1 
1 2014-05-22 15:15:00 21.6 
2 2014-05-22 15:20:00 21.2 
3 2014-05-22 15:25:00 21.3 
4 2014-05-22 15:30:00 21.5 
5 2014-05-22 15:35:00 21.1 
6 2014-05-22 15:40:00 21.5 

、私はデータフレームから最初と最後の日取り除い:私はそのように見えるのデータフレームを作りました。 Rは日付や時刻を認識していないので、「要因」として、私は適切に変更するために、ライブラリライブラリを使用しました。今のように見える:

Date  Time T1 
1 2014-05-23  0S 14.2 
2 2014-05-23 5M 0S 14.1 
3 2014-05-23 10M 0S 14.6 
4 2014-05-23 15M 0S 14.3 
5 2014-05-23 20M 0S 14.4 
6 2014-05-23 25M 0S 14.5 

今、問題は本当に始まります。 ts関数を使用すると、日付は16944に変更され、時刻は0に変更されます。正しい開始日と頻度を持つデータフレームを設定するにはどうすればよいですか?新しいデータセットが5分間に入って、頻度は288になるはずです。また、開始日をベクトルとして設定しようとしました。 5月の22日は、今年の142th日だったので、私はこの

ts_df <- ts(df, start=c(2014, 142/365), frequency=288) 

にあってもエラーを試していないが、私はstart(ds_df)のために行くとき、私は取得しend(ds_df)

[1] 2013.998 
[1] 2058.994 

誰かが私にどのようにヒントを与えることができますこの種のデータを処理するには?

答えて

1

"ts"クラスは、通常、そのタイプのデータに適していません。 DFが、この回答の最後にノートに再現可能に示されたデータフレームであると仮定すると、それを"zoo"クラスオブジェクトに変換してから、いくつかの操作を実行します。関連するxtsパッケージも使用できます。

library(zoo) 

z <- read.zoo(DF, index = 1:2, tz = "") 

window(z, start = "2014-05-22 15:25:00") 

head(z, 3) # first 3 
head(z, -3) # all but last 3 
tail(z, 3) # last 3 
tail(z, -3) # all but first 3 

z[2:4] # 2nd, 3rd and 4th element of z 

coredata(z) # numeric vector of data values 
time(z) # vector of datetimes 

fortify.zoo(z) # data frame whose 2 cols are (1) datetimes and (2) data values 

aggregate(z, as.Date, mean) # convert to daily averaging values 

ym <- aggregate(z, as.yearmon, mean) # convert to monthly averaging values 
frequency(ym) <- 12 # only needed since ym only has length 1 
as.ts(ym) # year/month series can be reasonably converted to ts 

plot(z) 

library(ggplot2) 
autoplot(z) 

read.zooもファイルからデータを読み取るために使用されている可能性があります。

注:再現可能な形で上に使用DF

DF <- structure(list(Date = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "2014-05-22", 
class = "factor"), 
    Time = structure(1:6, .Label = c("15:15:00", "15:20:00", 
    "15:25:00", "15:30:00", "15:35:00", "15:40:00"), class = "factor"), 
    T1 = c(21.6, 21.2, 21.3, 21.5, 21.1, 21.5)), .Names = c("Date", 
"Time", "T1"), class = "data.frame", row.names = c("1", "2", 
"3", "4", "5", "6")) 
+0

こんにちはグロタンディークは、あなたの迅速な返事をありがとうございました。もう一度返信してくれましたが、たくさんのお手伝いをしました。 – ngn16920