按样本数加权最大丰度

时间:2013-08-12 23:30:01

标签: r weighted

我有一个数据集,其中包含有机体丰度和沉积物泥浆含量%的数据。

我随后将泥浆含量数据划分为10个箱(即0-10%,10.1-20%等),并将丰度数据相应地放入每个箱中。

主要目的是绘制每个泥浆箱中泥浆梯度的最大丰度(即0-100%),但这些最大值应按每个箱中的样本数加权。

所以,我的问题是如何根据每个箱子中的样本数量来计算给定泥箱中的最大丰度?

以下是我数据的简单子集:

Mud % bins: |     0 - 9      |     9.1 - 18      |     18.1 - 27    |
Abundance:   10,10,2,2,2,1,1      15,15,15,2      20,20,20,1,1,1,1,1

2 个答案:

答案 0 :(得分:1)

您可以使用plyr包中的ddply。在以下代码中,wtdabundance是您的weighted abundance= (max of a bin*number of observation of that bin)/total observation 对于您的样本数据,

mydata<-structure(list(id = 1:19, bin = structure(c(1L, 1L, 1L, 1L, 1L, 
1L, 1L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("0-9", 
"18.1-27", "9.1-18"), class = "factor"), abundance = c(10L, 10L, 
2L, 2L, 2L, 1L, 1L, 15L, 15L, 15L, 2L, 20L, 20L, 20L, 1L, 1L, 
1L, 1L, 1L)), .Names = c("id", "bin", "abundance"), class = "data.frame", row.names = c(NA, 
-19L))
> mydata
   id     bin abundance
1   1     0-9        10
2   2     0-9        10
3   3     0-9         2
4   4     0-9         2
5   5     0-9         2
6   6     0-9         1
7   7     0-9         1
8   8  9.1-18        15
9   9  9.1-18        15
10 10  9.1-18        15
11 11  9.1-18         2
12 12 18.1-27        20
13 13 18.1-27        20
14 14 18.1-27        20
15 15 18.1-27         1
16 16 18.1-27         1
17 17 18.1-27         1
18 18 18.1-27         1
19 19 18.1-27         1


 ddply(dat,.(bin), summarize, max.abundance=max(abundance), freq=length(bin),mwtdabundance=((max.abundance*freq/nrow(dat))))
      bin max.abundance freq mwtdabundance
1     0-9            10    7      3.684211
2 18.1-27            20    8      8.421053
3  9.1-18            15    4      3.157895

答案 1 :(得分:0)

aggregate解决方案:

如果您的数据如下:

dat <- data.frame(
  bin=rep(c("0-9","9.1-18","18.1-27"),c(7,4,8)),
  abundance=c(10,10,2,2,2,1,1,15,15,15,2,20,20,20,1,1,1,1,1)
)

       bin abundance
1      0-9        10
...
8   9.1-18        15
...
12 18.1-27        20

然后:

aggregate(abundance ~ bin,data=dat,FUN=function(x) max(x) * length(x)/nrow(dat))

      bin abundance
1     0-9  3.684211
2 18.1-27  8.421053
3  9.1-18  3.157895