[R包分享] naniar包处理缺失数据

2024-07-26 14:22:51 浏览数 (2)

欢迎关注R语言数据分析指南

本节来分享介绍一款R包naniar主要用于探索缺失数据结构,完美兼容ggplot和tidydata。更多详细内容请参考官方文档。

官方文档

https://naniar.njtierney.com/articles/naniar.html

代码语言:javascript复制
library(tidyverse)

ggplot(airquality,aes(x = Solar.R,y = Ozone))   
  geom_point()

Warning message: Removed 42 rows containing missing values or values outside the scale range (geom_point()).

该警告问题在于ggplot默认不处理缺失值,并删除缺失值。这使得它们很难探索。它还提出了一个奇怪的问题:“如何可视化不存在的东西?

代码语言:javascript复制
install.packages("naniar")
library(naniar)

ggplot(airquality, aes(x = Solar.R, y = Ozone))   
  geom_miss_point()

同时该geom图层也完全兼容ggplot2的其它功能,例如facets

代码语言:javascript复制
ggplot(airquality,aes(x = Solar.R, y = Ozone))   
  geom_miss_point()   
  facet_wrap(~Month)
代码语言:javascript复制
miss_case_table(airquality)
代码语言:javascript复制
# A tibble: 3 × 3
  n_miss_in_case n_cases pct_cases
           <int>   <int>     <dbl>
1              0     111     72.5 
2              1      40     26.1 
3              2       2      1.31

miss_case_table()将案例/行中缺失值的数量制成表格。下面显示了案例中的缺失值数量:

有 111 个案例没有缺失,约占数据的 72%。 共有 40 个案例,其中 1 个缺失,占数据的 26%。 然后有 2 个案例,其中 2 个缺失 - 这些占数据的 1%。

统计缺失值数量
代码语言:javascript复制
miss_var_summary(airquality)
代码语言:javascript复制
# A tibble: 6 × 3
  variable n_miss pct_miss
  <chr>     <int>    <num>
1 Ozone        37    24.2 
2 Solar.R       7     4.58
3 Wind          0     0   
4 Temp          0     0   
5 Month         0     0   
6 Day           0     0   
对缺失值进行建模
代码语言:javascript复制
library(rpart)
library(rpart.plot)

airquality %>%
  add_prop_miss() %>%
  rpart(prop_miss_all ~ ., data = .) %>%
  prp(type = 4, extra = 101, prefix = "Prop. Miss = ")

0 人点赞