Achim, Thanks for pointing me in the right direction! I broke your user-defined function down into two separate aggregate calls on which.min and length.
library(zoo) n <- 1000 dly <- zoo( x = rnorm(n), order.by = seq.Date(as.Date('1970-01-01'), by = 'day', length.out = n) ) year <- as.numeric( format(index(dly), '%Y') ) annual.min <- aggregate( dly, by = year, FUN = min ) ix <- aggregate(dly, year, which.min ) l <- aggregate(dly, year, length) a <- c(0, as.vector(cumsum(l)[-length(l)])) b <- as.vector(ix) annual.min <- dly[a+b] plot(dly) points(annual.min, pch = 19, col = 'red') -----Original Message----- From: Achim Zeileis [mailto:achim.zeil...@uibk.ac.at] Sent: Thursday, May 13, 2010 12:29 PM To: Hutchinson,David [PYR] Cc: r-help@r-project.org Subject: Re: [R] aggregate.zoo On Thu, 13 May 2010, Hutchinson,David [PYR] wrote: > I have been using aggregate function to determine the annual minimum > in a daily time series. However, I was also hoping to determine the > date of occurrence without having to loop through each year to > identify the date of each minimum returned from aggregate(). Is there > a more convenient way of doing so? You could do something like this: ## determine position of minimum and number of observations ix <- aggregate(dly, year, function(x) c(which.min(x), length(x))) ## expand to overall index ix <- as.vector(cumsum(c(0, head(ix[,2], -1))) + ix[,1]) ## subset original series dly[ix] hth, Z > Thanks in advance, > > Dave > > library(zoo) > n <- 1000 > dly <- zoo( x = rnorm(n), order.by = seq.Date(as.Date('1970-01-01'), > by = 'day', length.out = n) ) > year <- as.numeric( format(index(dly), '%Y') ) annual.min <- > aggregate( dly, by = year, FUN = min ) > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.