我的理解是缺失值被组替换,对于组中具有重复的 ID,那些特定的 ID 需要具有它们两者的平均值。
因此,您需要执行两个功能:
data$variable <- ave(data$variable, data$group,
FUN = function(x) ifelse(is.na(x), mean(x, na.rm = TRUE), x))
data$variable <- ave(data$variable, data$group, data$ID,
FUN = mean)
在dplyr 语法中,你会这样做:
library(dplyr)
data <- data%>%
group_by(group)%>%
mutate(variable = coalesce(variable, mean(variable, na.rm = TRUE)))%>%
group_by(ID, add = T)%>%
mutate(variable = mean(variable))%>%
ungroup()
还有data.table:
library(data.table)
setDT(data)
data[, variable := ifelse(is.na(variable), mean(variable, na.rm = T), variable), by = group]
data[, variable := mean(variable), by = .(ID, group)]