Jim, That works great! However, would you please explain what the '[' and the 1 do in the sapply function? I understand that you are cutting x by quarter, then creating a list of x that is split based on those cuts. I just don't understand what "[" means in this contex, or what the number one at the end does.
Thanks for you help, Tim Tim Clark Department of Zoology University of Hawaii --- On Fri, 8/14/09, jim holtman <jholt...@gmail.com> wrote: > From: jim holtman <jholt...@gmail.com> > Subject: Re: [R] Finding minimum of time subset > To: "Tim Clark" <mudiver1...@yahoo.com> > Cc: r-help@r-project.org > Date: Friday, August 14, 2009, 6:18 AM > Here is one way to do it: > > > > 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") > > # you might want a date on your data > > x <- as.POSIXct(mytime, format="%H:%M:%S") > > # create quarter hour intervals for the data range > > quarter <- seq(trunc(min(x), 'days'), trunc(max(x) > + 86400, 'days'), by='15 min') # add 86400 to add a day for > truncation > > # cut the data by quarter hours and then take the > first value in each group > > x.s <- sapply(split(x, cut(x, breaks=quarter), > drop=TRUE), '[', 1) > > # lost the 'class' for some reason; put it back > > class(x.s) <- c("POSIXt", "POSIXct") > > # the answer > > x.s > 2009-08-14 12:00:00 > 2009-08-14 12:15:00 > 2009-08-14 > 12:30:00 2009-08-14 > 12:45:00 2009-08-14 13:00:00 > "2009-08-14 12:00:00 EDT" "2009-08-14 12:15:05 EDT" > "2009-08-14 > 12:30:01 EDT" "2009-08-14 12:45:01 EDT" "2009-08-14 > 13:00:00 EDT" > 2009-08-14 13:15:00 > "2009-08-14 13:15:02 EDT" > > > > > On Thu, Aug 13, 2009 at 4:10 PM, Tim Clark<mudiver1...@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@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. > > > > > > -- > Jim Holtman > Cincinnati, OH > +1 513 646 9390 > > What is the problem that you are trying to solve? > ______________________________________________ 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.