[R] Subsampling out of site*abundance matrix

David Winsemius dwinsemius at comcast.net
Sun Feb 6 23:53:34 CET 2011


On Feb 6, 2011, at 3:25 PM, B77S wrote:

>
> Hello,
> How can I randomly sample individuals within a sites from a site  
> (row) X
> species abundance (column) data frame or matrix?  As an example, the  
> matrix
> "abund2" made below.
>
> ##### (sorry, Im a newbie and this is the only way I know to get an  
> example
> on here)
>
> abund1 <-    c(150,  300,  0,  360,  150,  300,  0,  240,  150,    
> 0,  60,
> 0, 150,  0, 540, 0, 0, 300, 0, 240, 300, 300, 0, 360, 300, 0, 600, 0)
> abund2 <- matrix(data=abund1, nrow=4, ncol=7)
> colnames(abund2) <- c("spA", "spB", "spC", "spD", "spa", "spF", "spG")
> rownames(abund2)<-c("site1", "site2", "site3", "site4")

Perfect. Best submission of an example by a newbie in weeks.

>
> #####
>
>> abund2
>      spA spB spC spD spa spF spG
> site1 150 150 150 150   0 300 300
> site2 300 300   0   0 300 300   0
> site3   0   0  60 540   0   0 600
> site4 360 240   0   0 240 360   0
>
> How can I make a random subsample of 100 individuals from the  
> abundances
> given for each site?

samptbl <- apply(abund2, 1, function(x) sample(colnames(abund2), 100,  
prob=x, replace=TRUE) )
samptbl

        site1 site2 site3 site4
   [1,] "spG" "spa" "spD" "spF"
   [2,] "spF" "spF" "spG" "spB"
   [3,] "spF" "spB" "spC" "spA"
   [4,] "spD" "spa" "spG" "spA"
   [5,] "spF" "spa" "spD" "spa"
   [6,] "spA" "spB" "spD" "spF"
   [7,] "spA" "spF" "spD" "spA"
   [8,] "spG" "spF" "spG" "spa"
   [9,] "spF" "spF" "spG" "spa"
  [10,] "spG" "spB" "spD" "spA"

Snipped

apply() always transposes the results when called with row margins.  
The t() function would "fix" this if it needed to be arranged with  
rows by site. You could check by further apply-(cation) of table to  
the columns:
 > apply(samptbl, 2, table)
$site1

spA spB spC spD spF spG
   8  13   6  13  32  28

$site2

spa spA spB spF
  25  31  25  19

$site3

spC spD spG
   9  51  40

$site4

spa spA spB spF
  22  27  19  32

>
> This is probably really easy.


> Thanks.
> Bubba
> -- 
> View this message in context: http://r.789695.n4.nabble.com/Subsampling-out-of-site-abundance-matrix-tp3263148p3263148.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> 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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list