我有一个带有三个级别的类别变量(A
,B
和C
)。
我也有一个连续变量,上面有一些缺失的值。
我想将NA
值替换为其组的平均值。也就是说,必须将A
组中缺少的观察结果替换为A
组中的平均值。
我知道我可以计算每个组的均值并替换缺失的值,但是我敢肯定,还有另一种方法可以通过循环更有效地做到这一点。
A <- subset(data, group == "A")
mean(A$variable, rm.na = TRUE)
A$variable[which(is.na(A$variable))] <- mean(A$variable, na.rm = TRUE)
现在,我知道我可以对
B
和C
组执行相同的操作,但是也许for
循环(带有if
和else
)可以解决问题? 最佳答案
require(dplyr)
data %>% group_by(group) %>%
mutate(variable=ifelse(is.na(variable),mean(variable,na.rm=TRUE),variable))
对于更快的base-R版本,可以使用
ave
:data$variable<-ave(data$variable,data$group,FUN=function(x)
ifelse(is.na(x), mean(x,na.rm=TRUE), x))
关于r - 按组均值估算缺失数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55345593/