A somewhat faster version (for datasets with lots of dates, assuming it is sorted by date and time) is isLastInRun <- function(x) c(x[-1] != x[-length(x)], TRUE) f3 <- function(dataFrame) { dataFrame[ isLastInRun(dataFrame$Date), ] } where your two suggestions, as functions, are f1 <- function (dataFrame) { dataFrame[unlist(with(dataFrame, tapply(Time, list(Date), FUN = function(x) x == max(x)))), ] } f2 <- function (dataFrame) { dataFrame[cumsum(with(dataFrame, tapply(Time, list(Date), FUN = which.max))), ] }
Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On > Behalf > Of arun > Sent: Wednesday, August 14, 2013 1:08 PM > To: Noah Silverman > Cc: R help > Subject: Re: [R] How to extract last value in each group > > Hi, > Try: > dat1<- read.table(text=" > Date Time O H L C U D > 06/01/2010 1358 136.40 136.40 136.35 136.35 2 12 > 06/01/2010 1359 136.40 136.50 136.35 136.50 9 6 > 06/01/2010 1400 136.45 136.55 136.35 136.40 8 7 > 06/01/2010 1700 136.55 136.55 136.55 136.55 1 0 > 06/02/2010 331 136.55 136.70 136.50 136.70 36 6 > 06/02/2010 332 136.70 136.70 136.65 136.65 3 1 > 06/02/2010 334 136.75 136.75 136.75 136.75 1 0 > 06/02/2010 335 136.80 136.80 136.80 136.80 4 0 > 06/02/2010 336 136.80 136.80 136.80 136.80 8 0 > 06/02/2010 337 136.75 136.80 136.75 136.80 1 2 > 06/02/2010 338 136.80 136.80 136.80 136.80 3 0 > ",sep="",header=TRUE,stringsAsFactors=FALSE) > > dat1[unlist(with(dat1,tapply(Time,list(Date),FUN=function(x) x==max(x)))),] > # Date Time O H L C U D > #4 06/01/2010 1700 136.55 136.55 136.55 136.55 1 0 > #11 06/02/2010 338 136.80 136.80 136.80 136.80 3 0 > #or > dat1[cumsum(with(dat1,tapply(Time,list(Date),FUN=which.max))),] > Date Time O H L C U D > 4 06/01/2010 1700 136.55 136.55 136.55 136.55 1 0 > 11 06/02/2010 338 136.80 136.80 136.80 136.80 3 0 > > #or > dat1[as.logical(with(dat1,ave(Time,Date,FUN=function(x) x==max(x)))),] > # Date Time O H L C U D > #4 06/01/2010 1700 136.55 136.55 136.55 136.55 1 0 > #11 06/02/2010 338 136.80 136.80 136.80 136.80 3 0 > A.K. > > > > > ----- Original Message ----- > From: Noah Silverman <noahsilver...@ucla.edu> > To: "R-help@r-project.org" <r-help@r-project.org> > Cc: > Sent: Wednesday, August 14, 2013 3:56 PM > Subject: [R] How to extract last value in each group > > Hello, > > I have some stock pricing data for one minute intervals. > > The delivery format is a bit odd. The date column is easily parsed and used > as an index > for an its object. However, the time column is just an integer (1:1807) > > I just need to extract the *last* entry for each day. Don't actually care > what time it was, > as long as it was the last one. > > Sure, writing a big nasty loop would work, but I was hoping that someone > would be able > to suggest a faster way. > > Small snippet of data below my sig. > > Thanks! > > > -- > Noah Silverman, M.S., C.Phil > UCLA Department of Statistics > 8117 Math Sciences Building > Los Angeles, CA 90095 > > -------------------------------------------------------------------------- > > Date Time O H L C U D > 06/01/2010 1358 136.40 136.40 136.35 136.35 2 12 > 06/01/2010 1359 136.40 136.50 136.35 136.50 9 6 > 06/01/2010 1400 136.45 136.55 136.35 136.40 8 7 > 06/01/2010 1700 136.55 136.55 136.55 136.55 1 0 > 06/02/2010 331 136.55 136.70 136.50 136.70 36 6 > 06/02/2010 332 136.70 136.70 136.65 136.65 3 1 > 06/02/2010 334 136.75 136.75 136.75 136.75 1 0 > 06/02/2010 335 136.80 136.80 136.80 136.80 4 0 > 06/02/2010 336 136.80 136.80 136.80 136.80 8 0 > 06/02/2010 337 136.75 136.80 136.75 136.80 1 2 > 06/02/2010 338 136.80 136.80 136.80 136.80 3 0 > ______________________________________________ > 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. ______________________________________________ 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.