本人最近在研究缺失值处理的方法,在使用中位数插值的时候,遇到了一个问题。看代码
dt <- data.frame(a = c('1','2','','4', '5', '6', '7'),
b = c(6, 1, 8, 9, 10, NA, 12),
c = as.Date('2012-2-2','2012-2-2','2012-2-2','2012-2-2','2012-2-2','2012-2-2','2012-2-2'))
#构造中位数法
Medi <- function(input){
for (i in 1:ncol(input)) {
if(is.numeric(input[,i])){
output[, i] <- impute(input[, i], median)
}
}
output[, i] <- as.numeric(output[, i])
return(output)
}
#执行处理
library(Hmisc)
options(digits = 3)
out <- dt
out <- eval(parse(text = 'Medi'))(dt)
> class(out$b)
[1] "impute"
最终得出来的结果,out$b 的类型是impute,然后我写出到数据库,类型变成了text。百思不得其解,我明明已经
as.numeric了,还是不能变成数值型。求解各位大神,原因是什么?我应该如何修改?