簡體   English   中英

如何用R中的分組均值填寫NA值

[英]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 avena.aggregate一種選擇

library(zoo)
df$num <- with(df, ave(num, rat, let, FUN = na.aggregate))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM