# 导入数据
telecom_data <- read_csv(
'./data/telecom.csv'
)
# 数据检视
telecom_data %>% glimpse
# 10行,5列
# 4个字符型变量,1个双精度型变量
# 缺失值检验
is.na(telecom_data)
# 数据整体缺失率
sum(is.na(telecom_data))
mean(is.na(telecom_data))
# 自定义缺失率计算函数
var_na_ratio <-
function
(x){
return
(mean(is.na(x)))
}
# 变量缺失率
apply(telecom_data,
2
, var_na_ratio)
# 样本缺失率
apply(telecom_data,
1
, var_na_ratio)
# 数据集缺失可视化分析
# 缺失值模式
md.pattern(telecom_data)
aggr_plot <- aggr(telecom_data,
col=c(
'navyblue'
,
'red'
),
numbers=TRUE,
sortVars=TRUE,
labels=names(
data
),
cex.axis=.
7
,
gap=
3
,
ylab=c(
"缺失值直方图"
,
"缺失值模式"
))
# 以自带数据集airquality为例
data
<- airquality
data[
4
:
10
,
3
] <- rep(NA,
7
)
data[
1
:
5
,
4
] <- NA
data
<- data[-c(
5
,
6
)]
summary(
data
)
pMiss <-
function
(x){sum(is.na(x))/length(x)*
100
}
apply(
data
,
2
,pMiss)
apply(
data
,
1
,pMiss)
# 缺失值的插补
tempData <- mice(
data
,m=
5
,maxit=
50
,meth=
'pmm'
,seed=
500
)
completedData <- complete(tempData,
1
)
sum(is.na(
data
))
sum(is.na(completedData))
# mice包插补缺失值方法
methods(mice)
# 其它代码
summary(tempData)
dim(tempData
$imp
$Ozone
)
tempData
$meth
xyplot(tempData,Ozone ~ Wind+Temp+Solar.R,pch=
18
,cex=
1
)
densityplot(tempData)
stripplot(tempData, pch =
20
, cex =
1.2
)
tempData
modelFit1 <- with(tempData,lm(Temp~ Ozone+Solar.R+Wind))
summary(pool(modelFit1))
参考资料:
1https://datascienceplus.com/imputing-missing-data-with-r-mice-package/
2 https://raw.githubusercontent.com/dataoptimal/posts/master/data%20cleaning%20with%20R%20and%20the%20tidyverse/telecom.csv
好书推荐
1 R语言做商业智能,助你提高商业生产率
2 用RStudio做数据分析
返回搜狐,查看更多