我是靠谱客的博主 幽默糖豆,最近开发中收集的这篇文章主要介绍R 数据的预处理:数据中缺失值(NA)的处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

训练一个机器学习模型,其实大量的时间是花在数据的预处理和探索性数据分析上。尤其是实际中遇到的data都不会太干净,所以花较长的时间来做数据的预处理是很有必要的。

首先来建立一个简单的数据集

library(mice)
name = c(“Andy”,“Helly”,“Ann”,“Ketay”,“Wang”,“Liu”)
country = c(“UK”,“US”,“US”,“US”,“CH”,“CH”)
gender = c(“male”,“female”,NA,“female”,“male”,NA)
age = c(22,19,26,31,45,32)
income = c(12,NA,55,77,32,NA)
data = data.frame(name,country,gender,age,income)
data
# name country gender age income
# 1 Andy UK male 22 12
# 2 Helly US female 19 NA
# 3 Ann US <NA> 26 55
# 4 Ketay US female 31 77
# 5 Wang CH male 45 32
# 6 Liu CH <NA> 32 NA
查找NA

存在NA的rows

complete.cases(data)#当一笔数据是完整的,回传TRUE;当一笔数据有遗漏值,回传FALSE
#[1] TRUE FALSE FALSE TRUE TRUE FALSE

查找缺失值的位置

which(is.na(data))#返回缺失值的位置

计算数据集中有缺失的数据笔数所占比例

loss = sum(is.na(data))#计算数据集中的缺失值总数
have = sum(complete.cases(data))#统计数据集中完整样本的个数
ratio = loss/(loss have)#计算缺失值数据的比重
填补NA
  1. na.omit()可以删除所有含有缺失数据的row
data1 = na.omit(data)
data1
# name country gender age income
# 1 Andy UK male 22 12
# 4 Ketay US female 31 77
# 5 Wang CH male 45 32
  1. 最高频率来填补缺失值.尝试找到这些缺失值最可能的值。

对于变数分布近似正态分布时可以选用平均值;偏态分布一般采用中位数代表数据中心趋势的指标。

# mean_income = mean(data$income)
data2 = data
#一些函式计算时拥有na.rm=TRUE,可以在计算以前移除缺失值并使用剩馀值进行计算
data2[is.na(data2$income),“income”] = mean(data2$income,na.rm = T)#用平均数补充income的缺失值
data2
# name country gender age income
# 1 Andy UK male 22 12
# 2 Helly US female 19 44
# 3 Ann US <NA> 26 55
# 4 Ketay US female 31 77
# 5 Wang CH male 45 32
# 6 Liu CH <NA> 32 44
  1. 函式centralImputation()可以用数据的中心趋势值来填补数据集的所有缺失值
data3 = data
data3$income <- centralImputation(data3$income)
  1. 通过变数的相关关系填补缺失值
#函式cor()的功能是产生变数之间的相关值矩阵,参数use =“complete.obs”可以忽略含有NA的记录
cor(data[,c(“age”,“income”)],use =“complete.obs”)# =cor(data[,4:5],use =“complete.obs”)
# age income
# age 1.00000000 0.07670152
# income 0.07670152 1.00000000
lm(age~income,data = data)
#函式lm()可以用来获取线性模型
#可以使用上述线性关系计算变数的缺失值
  1. 用K-Nearest Neighbours填补遗漏值
require(DMwR)
imputeData <- knnImputation(data)

一个无聊的数据分析公众号,时常有一些脑洞的实例分析。
让我们一起学习,打通各种技能!
file

本文由博客一文多发平台 OpenWrite 发布!

最后

以上就是幽默糖豆为你收集整理的R 数据的预处理:数据中缺失值(NA)的处理的全部内容,希望文章能够帮你解决R 数据的预处理:数据中缺失值(NA)的处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部