根据R中的类别用另一个变量的平均值填充缺失值
Fill missing value with mean of another variable based on categories in R
我想用对应于 ID
列的 val
的平均值替换每一行中 val2
中的 NA 值。有什么简单的(tidyverse)方法可以做到这一点吗?
此外,我想知道如何用 val2
中的 mean(na.rm=TRUE)
值本身替换它 (例如:第 6 行和第 9 行val2 将替换为 4, mean(na.rm=TRUE)
of val2
(for ID==c
))
对于此图像中的数据框:
R代码:
df <- data.frame(ID=c("a","b","c","a","b","c","a","b","c"),
val=c(seq(1:9)), val2=c(1,2,4,NA,5,NA,7,NA,NA))
自己找到答案,如果有比这更好的答案建议,请分享
df %>%
group_by(ID) %>%
mutate(val2 = ifelse(is.na (val2), mean(val), val2))
点数
df %>%
group_by(ID) %>%
mutate(val2 = ifelse(is.na(val2), mean(val2,na.rm=TRUE), val2))
我想用对应于 ID
列的 val
的平均值替换每一行中 val2
中的 NA 值。有什么简单的(tidyverse)方法可以做到这一点吗?
此外,我想知道如何用 val2
中的 mean(na.rm=TRUE)
值本身替换它 (例如:第 6 行和第 9 行val2 将替换为 4, mean(na.rm=TRUE)
of val2
(for ID==c
))
对于此图像中的数据框:
R代码:
df <- data.frame(ID=c("a","b","c","a","b","c","a","b","c"),
val=c(seq(1:9)), val2=c(1,2,4,NA,5,NA,7,NA,NA))
自己找到答案,如果有比这更好的答案建议,请分享
df %>%
group_by(ID) %>%
mutate(val2 = ifelse(is.na (val2), mean(val), val2))
点数
df %>%
group_by(ID) %>%
mutate(val2 = ifelse(is.na(val2), mean(val2,na.rm=TRUE), val2))