# [R] retrieve most abundant species by sample unit

Wed Nov 9 01:52:27 CET 2005

```Your example does not appear to match your description of the problem.

If you want have a 500x177 matrix and want to find the largest and
second largest, you can try something like

m <- matrix( sample( 101:115 ), nc=3 )

[,1] [,2] [,3]
[1,]  102  112  110
[2,]  111  106  104
[3,]  108  101  103
[4,]  114  115  105
[5,]  113  107  109

t( apply( m, 1, function(x){
r <- rank(-x); c( which(r==1), which(r==2) ) } ) )

[,1] [,2]
[1,]    2    3
[2,]    1    2
[3,]    1    3
[4,]    2    1
[5,]    1    3

This uses the fact that all entries in a column is always refers to the
same species. If you have stacked data (especially where the species
appear in a non-regular manner), then it becomes slightly more tricky to
find an elegant solution.

On Tue, 2005-11-08 at 15:46 -0800, Graham Watt-Gremm wrote:
> Hi R-users:
> [R 2.2 on OSX 10.4.3]
> I have a (sparse) vegetation data frame with 500 rows (sampling
> units) and 177 columns (plant species) where the data represent %
> cover. I need to summarize the cover data by returning the names of
> the most dominant and the second most dominant species per plot. I
> reduced the data frame to omit cover below 5%; this is what it looks
> like stacked. I have experimented with tapply(), by(), and some
> functions mentioned in archived postings, but I haven't seen anything
> that answers to this directly. Does anybody have any ideas?
>
>       OBJECTID       PolygonID SpeciesCod AbundanceP
> 1       15006     ANT-CBG-rr1     Leymol    5.00000
> 3       15008     ANT-CBG-rr1     Ambcha    5.00000
> 5       15010      ANT-ESH-27     Atrpat   20.00000
> 6       15011      ANT-ESH-27     Ambcha   10.00000
> 11      15016      ANT-ESH-28     Salvir   20.00000
> 14      15019      ANT-ESH-28     Atrpat    5.00000
> 18      15023 ANT-POR-Rubarm5     Rubarm   60.00000
> 19      15024 ANT-POR-Rubarm5     Hedhel   40.00000
> 25      15030      ECO-CBG-A2     Griint    5.00000
> 27      15032      ECO-CBG-A2     Anngra    5.00000
> 38      15043      ECO-CBG-A4     Sperub   50.00000
>
> Regards,
> Graham Watt-Gremm
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help