目前,我有一个任务,包括一个数据表,该数据表包含有关在不同情况下测量的动物物种的观察信息。在我的数据的“重量”列中,我应该使用一些缺失值替换为动物来源物种的平均重量。因此,我希望在没有记录动物体重的两种情况下,“ albigula”物种的平均体重为148,以代替NA,以便获得完整的数据集。然后,我需要对另外10个左右的物种重复此过程。
除了以下几点,我想不出一种方法:
albigula <- filter(surveys_combined_year, surveys_combined_year$species == "albigula")
albigula$weight %>% mean(na.rm= TRUE)
但是,这显然不起作用,因为我无法在“ surveys_combined_year $ weight”中将平均值推算为其特定位置。
很抱歉,可能是超级初学者的问题,我已经搜索了课堂上提供的所有资源,但我似乎仍然无法理解我所缺少的内容。
请帮助我!
答案 0 :(得分:4)
我们可以进行group_by
replace
。按“种类”分组,“权重”中的replace
个NA
(replace_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的评论)