【发布时间】:2019-06-19 07:22:48
【问题描述】:
我正在尝试编写一个函数来用中位数替换列中的缺失值,这适用于因子/字符和数值。
library(dplyr)
test = data.frame(a=1:6,b=c("a","b",NA,NA,NA,"c"),c=c(1,1,1,1,2,NA),d=c("a","a","c",NA,NA,"b"))
fun_rep_na = function(df){
for(i in colnames(df)){
j<-sym(i)
df = df %>% mutate(!!j=if_else(is.na(!!j),median(!!j, na.rm=TRUE),!!j))
}
}
我看到 tidyr 有一个名为 replace_na 的函数,但我也不知道如何使用它。无论如何,我想要一个自定义函数。
上面的代码给了我一个错误。
【问题讨论】:
-
您不需要 for 循环使用
mutate_all。顺便说一句,median需要一个数字列 -
@akrun:啊,太好了,谢谢,我不知道
-
@Helen 阅读例如Allison, Paul D. 2002。缺失数据。 SAGE Publications, Inc.
-
我现在没时间买书:/
-
@jay.sf:我是一名统计学家。
标签: r replace missing-data median