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/

相关文章:

python - 如何根据其他变量估算缺失值

r - 在 gtsummary 中添加 OR,使用 beta/log(OR) 和 SE

r - 如何引用 dplyr 中的其他列名 mutate across

r - 如何在R中配对两个向量的元素

r - dplyr 的过滤器不适用于 lubridate 的时间格式?

r - 使用 dplyr 包 R 改变 data.frame 或 tibble 中的选定列

r - 通过通用标识符合并复杂的 data.frame 行

database - Blob 文件未出现在查询编辑器中

r - 在 ggplot 中动态定位在多行上的表达式

MATLAB:使用插值替换缺失值 (NaN)