Thanks to everyone for the different suggestions! Very useful. PS: The "aggregate" function based solution didnt work as-is for me, perhaps it needs some modification?
Thanks again, On Fri, Oct 2, 2009 at 1:51 PM, William Dunlap <wdun...@tibco.com> wrote: > > > -----Original Message----- > > From: r-help-boun...@r-project.org > > [mailto:r-help-boun...@r-project.org] On Behalf Of hadley wickham > > Sent: Friday, October 02, 2009 6:07 AM > > To: jim holtman > > Cc: r-help@r-project.org; Kavitha Venkatesan > > Subject: Re: [R] split-apply question > > > > On Fri, Oct 2, 2009 at 4:24 AM, jim holtman > > <jholt...@gmail.com> wrote: > > > try this: > > > > > >> x <- read.table(textConnection("x1 x2 x3 > > > + A 1 1.5 > > > + B 2 0.9 > > > + B 3 2.7 > > > + C 7 1.8 > > > + D 7 1.3"), header=TRUE) > > >> closeAllConnections() > > >> do.call(rbind, lapply(split(seq(nrow(x)), x$x1), function(.row){ > > > + x[.row[which.min(x$x2[.row])],] > > > + })) > > > x1 x2 x3 > > > A A 1 1.5 > > > B B 2 0.9 > > > C C 7 1.8 > > > D D 7 1.3 > > >> > > > > Or, using plyr and subset > > > > library(plyr) > > ddply(x, "x1", subset, x2 == min(x2)) > > > > Hadley > > Since we are using min() we can use sorting tricks > > f3 <- function(x) { > x <- x[with(x, order(x1,x2)),] > isFirstInRun <- function(z)c(TRUE, z[-1] != z[-length(z)]) > x[isFirstInRun(x$x1),] > } > > This has the advantage that it keeps the original row names intact. > It is quick even when there are lots of unique values in x1. > > Bill Dunlap > Spotfire, TIBCO Software > wdunlap tibco.com > > -- > > http://had.co.nz/ > > > > ______________________________________________ > > 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. > > > [[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.