Not the most forward way, but it works: y <- lapply(split(seq(x$month), x$month), function(.x){ .max <- which.max(x$length[.x]) x[.x[.max],] }) do.call('rbind', y)
y <- lapply(split(seq(x$month), x$month), function(.x){ data.frame(month=x$month[.x[1]], length=mean(x$length[.x]), ratio=mean(x$ratio[.x]), monthly1=mean(x$monthly1[.x]), monthly2=mean(x$monthly2[.x])) }) do.call('rbind', y) On 11/8/05, Todd A. Gibson <[EMAIL PROTECTED]> wrote: > > Hello, > I have a data manipulation problem that I can easily resolve by using > perl or python to pre-process the data, but I would prefer to do it > directly in R. > > Given, for example: > > month length ratio monthly1 monthly2 > 1 Jan 23 0.1 9 6 > 2 Jan 45 0.2 9 6 > 3 Jan 16 0.3 9 6 > 4 Feb 14 0.2 1 9 > 5 Mar 98 0.4 2 2 > 6 Mar 02 0.6 2 2 > > (FWIW, monthly1 and monthly2 are unchanged for each month) > > I understand how to do aggregations on single fields using split and > sapply, but how can I get entire lines. For example, For the maximum > of data$length grouped by data$month I would like to get back some > form of: > > 2 Jan 45 0.2 9 6 > 4 Feb 14 0.2 1 9 > 5 Mar 98 0.4 2 2 > > For mean, I would like to average all columns: > > Jan 28 0.2 9 6 > Feb 14 0.2 1 9 > Mar 50 0.5 2 2 > > Thank you, > -TAG > Todd A. Gibson > > ______________________________________________ > R-help@stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > -- Jim Holtman Cincinnati, OH +1 513 247 0281 What the problem you are trying to solve? [[alternative HTML version deleted]] ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html