[R] Aggregrate function

Monica Pisica pisicandru at hotmail.com
Thu Feb 12 19:58:12 CET 2009


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.




More information about the R-help mailing list