我想將日,月和年添加到數據框中,然後使用aggregate()
。
首先將您date
列到POSIXct OBJET:
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周爲一年中的第一個星期。星期一至星期日。
非常感謝您的回答。好處是,用xts我可以要求每週平均。我嘗試了你的代碼,我的整個數據集都遇到了一些問題,所以我嘗試修復它,並且保持聯繫!再次感謝你 ! –
沒關係,日間和月份剛剛倒過來(%m /%d >>>%d /%m)。謝謝 ! –