如何将均值推算到列中的特定观察值中?

时间:2019-04-25 13:02:30

标签: r na imputation

目前,我有一个任务,包括一个数据表,该数据表包含有关在不同情况下测量的动物物种的观察信息。在我的数据的“重量”列中,我应该使用一些缺失值替换为动物来源物种的平均重量。因此,我希望在没有记录动物体重的两种情况下,“ albigula”物种的平均体重为148,以代替NA,以便获得完整的数据集。然后,我需要对另外10个左右的物种重复此过程。

除了以下几点,我想不出一种方法:

    albigula <- filter(surveys_combined_year, surveys_combined_year$species == "albigula")
    albigula$weight %>% mean(na.rm= TRUE)

但是,这显然不起作用,因为我无法在“ surveys_combined_year $ weight”中将平均值推算为其特定位置。

很抱歉,可能是超级初学者的问题,我已经搜索了课堂上提供的所有资源,但我似乎仍然无法理解我所缺少的内容。

请帮助我!

1 个答案:

答案 0 :(得分:4)

我们可以进行group_by replace。按“种类”分组,“权重”中的replaceNAreplace_na)元素按“权重”的mean

library(dplyr)
library(tidyr)
out <- surveys_combined_year %>%
         group_by(species) %>%
         mutate(weight = replace_na(weight, mean(weight, na.rm = TRUE)))

编辑-将replace更改为replace_na(来自@BenBolker的评论)