楼主: guoxinyou085
1640 2

[问答] R语言中位数插值的问题 [推广有奖]

  • 0关注
  • 0粉丝

博士生

76%

还不是VIP/贵宾

-

威望
0
论坛币
112 个
通用积分
59.0018
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
90634 点
帖子
20
精华
0
在线时间
663 小时
注册时间
2016-12-28
最后登录
2024-5-17

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
本人最近在研究缺失值处理的方法,在使用中位数插值的时候,遇到了一个问题。看代码
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了,还是不能变成数值型。求解各位大神,原因是什么?我应该如何修改?

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言 中位数 缺失值处理 缺失值 R语言新手问题 缺失值处理

沙发
rainningpoet 发表于 2018-5-10 11:20:44 |只看作者 |坛友微信交流群
library(dplyr)

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'))




dt002=dt%>%mutate(b= ifelse(is.na(b), median(b, na.rm=TRUE), b))
dt002
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
xwan288 + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

藤椅
guoxinyou085 在职认证  发表于 2018-5-10 13:49:44 |只看作者 |坛友微信交流群
rainningpoet 发表于 2018-5-10 11:20
library(dplyr)

dt %mutate(b= ifelse(is.na(b), median(b, na.rm=TRUE), b))
太棒了,这种方式比我的方式简单多了!不过想请教一下,我的代码该如何修改呢?

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-17 22:03