我有每日时间序列数据(日期Vs降雨量)。我想列出每年(27年)的每日最大降雨量。使用which.max,我只能返回整个(27年)时间序列的每日最大降雨量值。任何人都可以建议一个更好的方法吗? 我试过了:
> head(dt)
date pcp
1 1987-01-01 2
2 1987-01-02 0.6
3 1987-01-03 0
.
.
.
. 2013-12-31 0.6
> dates <- as.Date(dt$date,"%Y/%m/%d")
> rain <- zoo(dt$pcp, dates)
> ndx = which.max(rain)
> dmax = rain[ndx,]
> dmax
1999-04-05
269.2
答案 0 :(得分:0)
我会建议这样做,但我确信那里更优雅。
dt$yrs <- 1900 + as.POSIXlt(dt$date)$year
dat <- data.frame(year= sort(unique(dt$yrs)), prc= numeric(length(unique(dt$yrs))))
for(i in 1:nrow(dat)){
dat$prc[i] <- dt$pcp[which.max(dt[dt$year == dat$year[i], "pcp"])]
}
答案 1 :(得分:0)
aggregate(pcp ~ format(as.Date(date), "%Y"), dt, max)
答案 2 :(得分:0)
ddply真的很喜欢这个。
rain <- data.frame(date=c("1987-01-01", "1987-01-02", "1987-01-03", "1988-10-01", "1988-11-02", "1988-11-01"),
pcp=c(2, 0.6, 1, 2.7, 1.1, 1.3)
)
rain$Year <- 1900+as.POSIXlt(rain$date)$year
library(plyr)
ddply(rain, .(Year), summarize, MaxPcpForYear=max(pcp))
# Year MaxPcpForYear
# 1 1987 2.0
# 2 1988 2.7