[R] Subsampling out of site*abundance matrix

B77S bps0002 at auburn.edu
Mon Feb 7 03:35:06 CET 2011


I figured there would be an even more straightforward way, but that works
David, thanks.  

There has to be a way to get the output I want/need (see below).  I tried to
bind or merge the elements of "apply(samptbl, 2, table)" but with no
success.  I could probably make a for loop with a merge statement, it would
work.. but I'm guessing unnecessary and just plain ugly.  

## what I want/need

         spA spB spC spD spa  spF  spG
site1   8    13   6    13   32    0     28
site2   31  25   0      0   25   19      0
site3    0    0   9     51    0     0    40
site4   27   19  0     0    22   32      0

If you know, I'd appreciate it.. thanks again for the help. 




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



More information about the R-help mailing list