[英]How to fill in NA values with grouped means in R
假設我有一個類似的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
我想group_by'rat'和'let'並獲取每個組的'num'平均值,並使用它來填充NA值 。
我已經完成了分組並得到了平均值,但是不知道如何應用這些值來填充原始df 中的NA值 。 不同的方法將不勝感激! 謝謝。
df %>% group_by(rat,let) %>% summarise(num_avg = mean(num,na.rm=T))
這是一種方法。
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)]
這是來自zoo
ave
和na.aggregate
一種選擇
library(zoo)
df$num <- with(df, ave(num, rat, let, FUN = na.aggregate))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.