我有一个包含多列的数据集,其中一列缺少所需的数据块。
缺少数据的列df$Variable总是归于一个特定的人df$Name。当df$Variable中有缺失数据时,有没有办法估算每个人的平均值,而不是整个数据集的平均值?
我一直在使用imputeTS库。
发布于 2019-03-20 04:21:29
如果没有可重复的例子,很难做出明确的回答,但考虑到您所说的,这样的东西应该是可行的:
library('tidyverse')
df <- data.frame(Name = c(rep("A", 5), rep("B", 5)),
Variable = sample(c(1, 2, 3, NA), 10, replace = TRUE))
df %>%
group_by(Name) %>%
mutate(non_na_mean = mean(Variable, na.rm = T)) %>%
ungroup() %>%
mutate(newVariable = ifelse(is.na(Variable), non_na_mean, Variable))发布于 2019-03-20 04:34:31
在看不到你的数据框架的情况下,我相信这是可行的。
set.seed(7)
# make some fake data
df <- data.frame(Name = rep(as.character(c("A", "B", "C", "D")), 10), Variable = sample(1:100, 40))
# change some to NA
df[which(df$Variable > 40),"Variable"] <- NA
# Fill in NA's for D with the mean of D
df[which(df$Name == "D" & is.na(df$Variable)),"Variable"] <-
mean(df[which(df$Name == "D"),"Variable"], na.rm = TRUE)你也可以遍历其他的‘变量’
variable_vec <- c("A", "B", "C", "D")
for(i in 1:length(variable_vec)){
df[which(df$Name == i & is.na(df$Variable)),"Variable"] <-
mean(df[which(df$Name == i),"Variable"], na.rm = TRUE)
}https://stackoverflow.com/questions/55248921
复制相似问题