[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