I don't have an easy solution with aggregate, because the function in aggregate needs to return a scalar. But the following should work:
do.call("rbind", lapply(split(xveg, xveg$loc), function(x) x[which.max(x$tot), ])) loc sp tot L1 L1 b 60 L2 L2 e 30 L3 L3 b 68 -Christos > -----Original Message----- > From: r-help-boun...@r-project.org > [mailto:r-help-boun...@r-project.org] On Behalf Of Monica Pisica > Sent: Thursday, February 12, 2009 1:58 PM > To: R help project > Subject: [R] Aggregrate function > > > Hi, > > I have to recognize that i don't fully understand the > aggregate function, but i think it should help me with what i > want to do. > > xveg is a data.frame with location, species, and total for > the species. Each location is repeated, once for every > species present at that location. For each location i want to > find out which species has the maximum total ... so i've > tried different ways to do it using aggregate. > > loc <- c(rep("L1", 3), rep("L2", 5), rep("L3", 2)) sp <- > c("a", "b", "c", "a", "d", "b", "e", "c", "b", "d") tot <- > c(20, 60, 40, 15, 25, 10, 30, 20, 68, 32) xveg <- > data.frame(loc, sp, tot) > > result desired: > > L1 b > L2 e > L3 b > > sp_maj <- aggregate(xveg[,2], list(xveg[,1], function(x) > levels(x)[which.max(table(x))]) > > This is wrong because it gives the first species name in each > level of location, so i get a, a, b, as species instead of b, e, b. > > I've tried other few aggregate commands, all with wrong results. > > I will appreciate any help, > > Thanks, > > Monica > > _________________________________________________________________ > > the go. > > ______________________________________________ > 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.