【问题标题】:Calculating weighted average according to various variable classes in R [duplicate]根据R中的各种变量类计算加权平均值[重复]
【发布时间】:2019-04-17 12:43:21
【问题描述】:

我有不同物种的大小数据。 每个样本代表一个 1 m^2 的礁区(样方;“唯一”)。在任何给定年份(“YrSi”),每个地点都应该有 5 个样方,一个样方中应该有任意数量的物种(有些物种比其他物种多,而且它们经常不同)。 我需要根据每个“YrSi”(年份-站点组合)和“Taxa”(即物种)的“计数”(即加权平均值)的权重计算“大小”的平均值。 示例:

head(df)
         Unique   Yr Si   Qd      YrSi                   Taxa Count Size SLength
6  2007-M1-1991 2007 M1 1991 2007 - M1 Carpophyllum flexuosum     7   10        
7  2007-M1-1991 2007 M1 1991 2007 - M1 Carpophyllum flexuosum     1   15        
8  2007-M1-1991 2007 M1 1991 2007 - M1 Carpophyllum flexuosum     5   20        
9  2007-M1-1991 2007 M1 1991 2007 - M1 Carpophyllum flexuosum     4   25        
10 2007-M1-1991 2007 M1 1991 2007 - M1 Carpophyllum flexuosum     4   30        
11 2007-M1-1991 2007 M1 1991 2007 - M1 Carpophyllum flexuosum     1   35  

我尝试使用嵌入在 ddply 中的 weighted.mean。但是计算是错误的,我对所有 YrSi 中的所有物种都得到了相同的值。我怀疑它在所有物种和样本中应用了 weighted.mean 计算。

wt_mean.df = ddply(df, c("YrSi","Taxa"),
 function(x) weighted.mean(df$Size, df$Count))
head(wt_mean.df)
       YrSi                        Taxa       V1
1 2007 - C1           Buccinulum lineum 21.22346
2 2007 - C1       Cantharidus purpureus 21.22346
3 2007 - C1 Carpophyllum maschalocarpum 21.22346
4 2007 - C1           Cominella virgata 21.22346
5 2007 - C1              Cookia sulcata 21.22346
6 2007 - C1            Ecklonia radiata 21.22346
head(wt_mean.df)
       YrSi                        Taxa       V1
1 2007 - C1           Buccinulum lineum 21.22346
2 2007 - C1       Cantharidus purpureus 21.22346
3 2007 - C1 Carpophyllum maschalocarpum 21.22346
4 2007 - C1           Cominella virgata 21.22346
5 2007 - C1              Cookia sulcata 21.22346
6 2007 - C1            Ecklonia radiata 21.22346

计算错误,我得到了所有 YrSi 中所有物种的相同值。我怀疑它在所有物种和样本中应用了weighted.mean 计算。

tail(wt_mean.df)
          YrSi                 Taxa       V1
1603 2019 - T5   Maoricolpus roseus 21.22346
1604 2019 - T5 Patiriella regularis 21.22346
1605 2019 - T5  Sargassum scabridum 21.22346
1606 2019 - T5 Sargassum sinclairii 21.22346
1607 2019 - T5      Trochus viridus 21.22346
1608 2019 - T5   Zonaria turneriana 21.22346

我做错了什么?为什么我在 V1 中没有得到正确的加权平均值? 此外,获得加权 sd 也会很好,但我还没有研究过。 请帮忙。

【问题讨论】:

    标签: r weighted-average summarization reorganize


    【解决方案1】:

    Dplyr 对您来说可能是一个简单的解决方案。

    library(dplyr)
    output <- df%>%
      group_by(Yr, Si, Taxa) %>%
      summarise(wMean = weighted.mean(Size, Count))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      相关资源
      最近更新 更多