日、月、年をデータ フレームに追加してから、aggregate()
.
まず、date
列を POSIXct オブジェクトに変換します。
d$timestamp <- as.POSIXct(d$dates,format = "%m/%d/%Y %H:%M",tz ="GMT")
次に、日付 (例: 12/03/2012) を という列に取得し、Date
これを試してください:
d$Date <- format(d$timestamp,"%y-%m-%d",tz = "GMT")
次に、日付別に集計します。
aggregate(cbind("temperature.mean" = temperature,
"salinity.mean" = salinity) ~ Date,
data = d,
FUN = mean)
同様に、月を列に入れることができます (それM
を月と呼びましょう)、そして...
d$M <- format(d$timestamp,"%B",tz = "GMT")
aggregate(cbind("temperature.mean" = temperature,
"salinity.mean" = salinity) ~ M,
data = d,
FUN = mean)
または、年月が必要な場合
d$YM <- format(d$timestamp,"%y-%B",tz = "GMT")
aggregate(cbind("temperature.mean" = temperature,
"salinity.mean" = salinity) ~ YM,
data = d,
FUN = mean)
データに NA 値がある場合は、それらを考慮する必要がある場合があります。
aggregate(cbind("temperature.mean" = temperature,
"salinity.mean" = salinity) ~ YM,
data = d,
function(x) mean(x,na.rm = TRUE))
最後に、週単位で平均したい場合は、それも可能です。最初に週番号を生成してから、aggregate()
再度使用します。
d$W <- format(d$timestamp,"%W",tz = "GMT")
aggregate(cbind("temperature.mean" = temperature,
"salinity.mean" = salinity) ~ W,
data = d,
function(x) mean(x,na.rm = TRUE))
このバージョンの週番号は、週 1 をその年の最初の月曜日の週として定義します。週は月曜日から日曜日までです。