用列平均值替换数据框中的 NA 值

Replace NA values in data frame with the column mean

拜托,我想逐列更改所有 NA 值。但我不知道我必须在我的代码中放置条件 [is.na(df1()input$to_mean)] 的位置。我的代码有效,但列中的所有值都已更改(逻辑上),但我只需要替换 NA 值。有人可以帮忙吗?

observeEvent(input$NA_mean, {
    df1(df1() %>% mutate(!!input$to_mean := mean(df1()[[input$to_mean]], na.rm = T)))
  })

#this code change all values in column to column mean, i need replace only NA values ([is.na(df1()input$to_mean)])
library(tidyverse)
df1 <- tibble(x = seq(3), y = c(1, NA, 2))
df1 %>% mutate(y = y %>% replace_na(mean(df1$y, na.rm = TRUE)))
#> # A tibble: 3 × 2
#>       x     y
#>   <int> <dbl>
#> 1     1   1  
#> 2     2   1.5
#> 3     3   2

reprex package (v2.0.0)

于 2022 年 3 月 10 日创建