r - 如何将列中的所有 NA 换成中位数?

标签 r dplyr missing-data sapply valuestack

我想将列中的所有 NA 值交换为相应的中位数

id <- c(1,2,3,4,5,6,7,8,9,10)
varA <- c(15,10,8,19,7,5,NA,11,12,NA)
varB <- c(NA,1,2,3,4,3,3,2,1,NA)
df <- data.frame(id, varA,varB)

median(df$varA, na.rm=TRUE)
median(df$varB, na.rm=TRUE)

df1 <- df

# Columns to be modified with Median in place of the NA

col <- c("varA", "varB")                           

df1[col] <- sapply(df1[col],  
                              function(x) replace(x, x %in% is.na(df1), median[col]))
df1 

[.default(df1, col) 中出现错误:下标类型“closure”无效

最佳答案

我们可能会使用

library(zoo)
df[col] <-  na.aggregate(df[col], FUN = median)

关于r - 如何将列中的所有 NA 换成中位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74586878/

相关文章:

r - 我可以测试广义最小二乘模型的自相关吗?

r - 如何使用 forcats 根据另一个变量的子集(方面)重新排序一个因子?

r - 如何使用Shiny服务器在本地计算机上对R Shiny应用程序进行Docker化?

r - 使用 ggmap 创建正交 map

r - 计算每个 ID 的唯一值的组合数量

r - 如何使用 magrittr 从数据框中提取单个元素?

r - ts(x) : 'ts' object must have one or more observations 错误

c - 在 C 中使用套接字在 TCP 传输中丢失数据

r - 创建包含缺失值的行位置的数据框

r - 如何在r中删除带有NA的尾部?