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@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@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.

Reply via email to