# [R] Finding minimum of time subset

Gabor Grothendieck ggrothendieck at gmail.com
Fri Aug 14 19:48:41 CEST 2009

```Converting to "times" class we can use trunc.times to
truncate to 15 minutes and then use tapply to get the
indices, ix.

> library(chron)
> tc <- times(mytime)
> ix <- tapply(seq_along(tc), trunc(tc, "00:15:00"), head, 1)
> tc[ix]
[1] 12:00:00 12:15:05 12:30:01 12:45:01 13:00:00 13:15:02

Note that "times" class assumes hour cannot be greater than 23
which is ok at least for the data in your example.

On Thu, Aug 13, 2009 at 4:10 PM, Tim Clark<mudiver1200 at yahoo.com> wrote:
> Dear List,
>
> I have a data frame of data taken every few seconds.  I would like to subset the data to retain only the data taken on the quarter hour, and as close to the quarter hour as possible.  So far I have figured out how to subset the data to the quarter hour, but not how to keep only the minimum time for each quarter hour.
>
> For example:
> mytime<-c("12:00:00","12:00:05","12:15:05","12:15:06","12:20:00","12:30:01","12:45:01","13:00:00","13:15:02")
> subtime<-grep(pattern="[[:digit:]]+[[:punct:]]00[[:punct:]][[:digit:]]+|[[:digit:]]+[[:punct:]]15[[:punct:]][[:digit:]]+|[[:digit:]]+[[:punct:]]30[[:punct:]][[:digit:]]+|[[:digit:]]+[[:punct:]]45[[:punct:]][[:digit:]]+",mytime)
> mytime[subtime]
>
> [1] "12:00:00" "12:00:05" "12:15:05" "12:15:06" "12:30:01" "12:45:01" "13:00:00" "13:15:02"
>
> This gives me the data taken at quarter hour intervals (removes 12:20:00) but I am still left with multiple values at the quarter hours.
>
> I would like to obtain:
>
> "12:00:00" "12:15:05" "12:30:01" "12:45:01" "13:00:00" "13:15:02"
>
> Thanks!
>
> Tim
>
>
>
>
> Tim Clark
> Department of Zoology
> University of Hawaii
>
> ______________________________________________
> R-help at 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.
>

```