7

5 秒ごとに 1 週​​間のデータが読み取られます。データの例を以下に示します。

9/1/2012 00:00:00    1
9/1/2012 00:00:05    2
9/1/2012 00:00:10    3

毎日の時間平均を計算したい。次に、さまざまな日付を表す線で「1 時間あたりの平均読み取り値と時間」の複数線プロットを作成します。

ここにあるのは週平均です

data$date = as.POSIXct(strptime(data$date, 
                  format = "%d/%m/%Y %H:%M","GMT")) 
means <- aggregate(data["nox"], format(data["date"],"%Y-%U"),
                 mean, na.rm = TRUE) 

1 日平均では、

data$date = as.POSIXct(strptime(data$date, 
                 format = "%d/%m/%Y %H:%M","GMT"))
means <- aggregate(data["nox"], format(data["date"],"%Y-%j"),
                 mean, na.rm = TRUE) 

毎日の時間平均を計算する方法は誰でも知っています。

4

3 に答える 3

8

私は@DWinの答えが好きですが?cut.Date、この場合にも使用できるヘルプファイルを一度見たことを思い出しました。数時間にわたって結果を確認できるように、いくつかのデータを作成しました。

set.seed(1)
data <- data.frame(date = seq(from = ISOdatetime(2012, 01, 01, 00, 00, 00),
                              length.out = 4320, by=5),
                   nox = sample(1:20, 4320, replace=TRUE))

hr.means <- aggregate(data["nox"], 
                      list(hour = cut(data$date, breaks="hour")), 
                      mean, na.rm = TRUE)
hr.means
#                  hour      nox
# 1 2012-01-01 00:00:00 10.60694
# 2 2012-01-01 01:00:00 10.13194
# 3 2012-01-01 02:00:00 10.33333
# 4 2012-01-01 03:00:00 10.38194
# 5 2012-01-01 04:00:00 10.51111
# 6 2012-01-01 05:00:00 10.26944
于 2012-09-11T05:29:30.437 に答える
5

バイベクターでフォーマット仕様を変更するだけで済みます。

hr.means <- aggregate(dat["V1"], format(dat["date"],"%Y-%m-%d %H"),
             mean, na.rm = TRUE) 
hr.means
#---------
           date V2
1 2012-01-09 00  2
于 2012-09-11T05:09:13.667 に答える