【问题标题】:Calculating mean, se and sd over total number rather than observed计算总数而不是观察到的平均值、se 和 sd
【发布时间】:2020-02-10 15:12:41
【问题描述】:

我正在尝试计算几个物种在每个栖息地的数量上的频率的平均值、标准差和标准差。我每个栖息地有三个地点和四种栖息地类型,所以总共有十二个地点。我的数据集是这样的

Site Species Habitat  Count

A      X   Wetland      3
B      T   Urban       12
B      U   Forest      18
C      Z   Grassland    3
C      Z   Grassland    6

我的问题是,并非所有物种都记录在每个站点中,当我运行代码时我得到 NA 值,但平均值计算不正确,因为并非所有物种都记录在每个站点 (N)

cdata <- ddply(df, c("Species", "Habitat"), summarise,
               N    = sum(Count),
               mean = mean(Count),
               sd   = sd(Count),
               se   = sd / sqrt(N))

我尝试使用 mutate 而不是 summarise 将 N 设置为 3,即每个栖息地的站点数,但我仍然获得 SD 和 SE 的 NA 值

【问题讨论】:

  • 这些物种不存在于这些地点,还是根本没有记录?如果是后者,那么您试图将丢失的数据视为零,这是不合适的。
  • 网站中没有物种
  • 那么你想要的结果是什么?每个站点丢失的物种为零。您能否发布足够的数据以显示每个站点每个物种的多个条目?
  • 如果它们不存在,只需将它们记录为零,或使用completedplyr::replace_na 之类的东西。

标签: r


【解决方案1】:

解决方法是将NA 值设置为0s。 这在这里解释:Set NA to 0 in R

cdata.data[is.na(cdata.data)] &lt;- 0

可能不是最干净的,但似乎可以工作。

【讨论】:

  • NA 与零不同,这会影响 meansd 等聚合。
  • 同意。我只是读了它,因为没有任何记录可以衡量某些东西的缺失,在这种情况下,零是有意义的。
猜你喜欢
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-18
  • 1970-01-01
  • 2016-11-14
相关资源
最近更新 更多