0

こんにちは、いくつかのデータ フレームがあり、それぞれが 2 つの列で構成されています。

Date                   Value1
2013-07-03 16:05:00     1178
2013-07-03 16:10:00     1200
2013-07-03 16:15:00     1180
2013-07-03 16:20:00     1175
2013-07-03 16:25:00     1205
2013-07-03 16:30:00     1170
.....

つまり、5 分ごとに (1 か月間) Value1 の測定値があります。私が (結果なしで) 試したのは、Value1 の 1 時間ごとの平均を使用して、2 つの列を持つ新しい df を作成することです。結果は次のようになります。

Date                   Value1
2013-07-03 16:00:00     1180
2013-07-03 17:00:00     1210
.....

ここで、1178 は 16:00 から 17:00 までの期間の Value1 の平均です。

df$Date<-as.POSIXct(df$Date, "%Y/%m/%d %H:%M:%S", tz = "")

それを行う簡単な方法はありますか?

また、zoo パッケージを使用しようとしました。

zoo_df<-read.zoo(df, header=T, tz="GMT")
aggregate(zoo_df, as.Date, mean)

明らかに、関数 as.Date は毎日の平均で完全に機能しますが、1 時間ごとの平均で同じことを行う同様の方法はありませんか?

4

1 に答える 1

4

時系列パッケージを使用します。

DF <- data.frame(Date=seq(from=as.POSIXct("2013-07-03 16:05:00", tz="GMT"),
                          to=as.POSIXct("2013-07-04 16:05:00", tz="GMT"),
                          by="5 min"),
                 Value1=1:289)

library(xts)
myTS <- zoo(DF[,2], DF[,1])

ep <- endpoints(myTS, "hours")
period.apply(myTS, INDEX=ep, FUN=mean) 
于 2013-08-09T08:53:03.107 に答える