【问题标题】:In R, how do I replace NA value with mean value of group? [duplicate]在 R 中,如何用组的平均值替换 NA 值? [复制]
【发布时间】:2020-05-23 22:44:51
【问题描述】:

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

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】:

    这个怎么样?

    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()
    

    【讨论】:

      猜你喜欢
      • 2019-03-22
      • 2017-05-02
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 2016-10-03
      • 2019-11-26
      相关资源
      最近更新 更多