[R] Aggregrate function
Christos Hatzis
christos.hatzis at nuverabio.com
Thu Feb 12 21:56:38 CET 2009
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-bounces at r-project.org
> [mailto:r-help-bounces at 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 at 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.
>
>
More information about the R-help
mailing list