说我有一个看起来像的df:
rat let num
1 A 3
3 c 12
3 B 41
1 B NA
1 A NA
2 B 2
2 C 20
1 C NA
2 A 33
3 C 10
我想分组'老鼠'和'让'并得到“数字”的平均值对于每个组,并使用它来填写NA值。
我已完成分组并得到了平均值,但不知道如何应用值来填充原始df中的NA值。不同的方法将不胜感激!感谢。
df %>% group_by(rat,let) %>% summarise(num_avg = mean(num,na.rm=T))
答案 0 :(得分:1)
这是一种方式。
df <- df %>% group_by(rat,let) %>% mutate(num_avg = mean(num,na.rm=T))
df$num[is.na(df$num)] <- df$num_avg[is.na(df$num)]
答案 1 :(得分:1)
以下是来自ave
na.aggregate
和zoo
的一个选项
library(zoo)
df$num <- with(df, ave(num, rat, let, FUN = na.aggregate))