在R中,如何用组的平均值替换NA值?

问题描述 投票:0回答:1

我有两个数据帧,第一个(dat)有两列groupvalue。第二数据帧(dat2)具有每个group的平均值。如何用dat中找到的组的平均值替换dat2中的NA值?

library(dplyr)

x <- as.data.frame(seq(from = 1, to = 10, by = 1))
names(x)[1] <- "value"
y <- as.data.frame(c("A","A","A","A","A","B","B","B","B","B"),1)
names(y)[1] <- "group"

dat <- cbind(y,x)

dat[dat == 3] <- NA
dat[dat == 7] <- NA

dat2 <- dat %>%
  group_by(group) %>%
  summarise_at(.vars = names(.)[2],.funs = c(mean="mean"),na.rm=TRUE)
r replace na
1个回答
0
投票

怎么样?

library(dplyr)

x <- as.data.frame(seq(from = 1, to = 10, by = 1))
names(x)[1] <- "value"
y <- as.data.frame(c("A","A","A","A","A","B","B","B","B","B"),1)
names(y)[1] <- "group"

dat <- cbind(y,x)

dat[dat == 3] <- NA
dat[dat == 7] <- NA

dat %>%
  group_by(group) %>%
  mutate(
    value = ifelse(is.na(value), mean(value, na.rm = T), value)
  ) %>%
  ungroup()
© www.soinside.com 2019 - 2024. All rights reserved.