1. Using airquality dataset from dlookr

library(dlookr)
## Warning: package 'dlookr' was built under R version 4.2.3
## Registered S3 methods overwritten by 'dlookr':
##   method          from  
##   plot.transform  scales
##   print.transform scales
## 
## Attaching package: 'dlookr'
## The following object is masked from 'package:base':
## 
##     transform
plot_na_pareto(airquality)

plot_na_pareto(airquality, only_na = T)

plot_na_intersect(airquality)

## Check missing data

library(visdat)
## Warning: package 'visdat' was built under R version 4.2.1
library(plotly)
## Warning: package 'plotly' was built under R version 4.2.2
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.2.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
vis_miss(airquality)
## Warning: `gather_()` was deprecated in tidyr 1.2.0.
## ℹ Please use `gather()` instead.
## ℹ The deprecated feature was likely used in the visdat package.
##   Please report the issue at <https://github.com/ropensci/visdat/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

2. Imputation by using missRanger

library(missRanger)
## Warning: package 'missRanger' was built under R version 4.2.3
## Generate airquality_NA
set.seed(123)
airquality_NA <- generateNA(airquality) %>%
  mutate(Month = factor(Month))
plot_na_pareto(airquality_NA)

plot_na_intersect(airquality_NA)

Imputation for airquality_NA

imputate_na(airquality_NA,
            Ozone, Temp, method = "mean") %>%
  plot()

imputate_na(airquality_NA,
            Ozone, Temp, method = "rpart") %>%
  plot()

imputate_na(airquality_NA,
            Ozone, Temp, method = "mice") %>%
  plot()
## 
##  iter imp variable
##   1   1  Ozone  Solar.R  Wind  Month  Day
##   1   2  Ozone  Solar.R  Wind  Month  Day
##   1   3  Ozone  Solar.R  Wind  Month  Day
##   1   4  Ozone  Solar.R  Wind  Month  Day
##   1   5  Ozone  Solar.R  Wind  Month  Day
##   2   1  Ozone  Solar.R  Wind  Month  Day
##   2   2  Ozone  Solar.R  Wind  Month  Day
##   2   3  Ozone  Solar.R  Wind  Month  Day
##   2   4  Ozone  Solar.R  Wind  Month  Day
##   2   5  Ozone  Solar.R  Wind  Month  Day
##   3   1  Ozone  Solar.R  Wind  Month  Day
##   3   2  Ozone  Solar.R  Wind  Month  Day
##   3   3  Ozone  Solar.R  Wind  Month  Day
##   3   4  Ozone  Solar.R  Wind  Month  Day
##   3   5  Ozone  Solar.R  Wind  Month  Day
##   4   1  Ozone  Solar.R  Wind  Month  Day
##   4   2  Ozone  Solar.R  Wind  Month  Day
##   4   3  Ozone  Solar.R  Wind  Month  Day
##   4   4  Ozone  Solar.R  Wind  Month  Day
##   4   5  Ozone  Solar.R  Wind  Month  Day
##   5   1  Ozone  Solar.R  Wind  Month  Day
##   5   2  Ozone  Solar.R  Wind  Month  Day
##   5   3  Ozone  Solar.R  Wind  Month  Day
##   5   4  Ozone  Solar.R  Wind  Month  Day
##   5   5  Ozone  Solar.R  Wind  Month  Day

imputate_na(airquality_NA, 
            Ozone, Temp, method = "mice", seed = 111) %>% 
  plot()
## 
##  iter imp variable
##   1   1  Ozone  Solar.R  Wind  Month  Day
##   1   2  Ozone  Solar.R  Wind  Month  Day
##   1   3  Ozone  Solar.R  Wind  Month  Day
##   1   4  Ozone  Solar.R  Wind  Month  Day
##   1   5  Ozone  Solar.R  Wind  Month  Day
##   2   1  Ozone  Solar.R  Wind  Month  Day
##   2   2  Ozone  Solar.R  Wind  Month  Day
##   2   3  Ozone  Solar.R  Wind  Month  Day
##   2   4  Ozone  Solar.R  Wind  Month  Day
##   2   5  Ozone  Solar.R  Wind  Month  Day
##   3   1  Ozone  Solar.R  Wind  Month  Day
##   3   2  Ozone  Solar.R  Wind  Month  Day
##   3   3  Ozone  Solar.R  Wind  Month  Day
##   3   4  Ozone  Solar.R  Wind  Month  Day
##   3   5  Ozone  Solar.R  Wind  Month  Day
##   4   1  Ozone  Solar.R  Wind  Month  Day
##   4   2  Ozone  Solar.R  Wind  Month  Day
##   4   3  Ozone  Solar.R  Wind  Month  Day
##   4   4  Ozone  Solar.R  Wind  Month  Day
##   4   5  Ozone  Solar.R  Wind  Month  Day
##   5   1  Ozone  Solar.R  Wind  Month  Day
##   5   2  Ozone  Solar.R  Wind  Month  Day
##   5   3  Ozone  Solar.R  Wind  Month  Day
##   5   4  Ozone  Solar.R  Wind  Month  Day
##   5   5  Ozone  Solar.R  Wind  Month  Day

airquality_impute <- missRanger(airquality_NA, 
                                formula = .~.,
                                num.trees = 1000, 
                                seed = 3)
## 
## Missing value imputation by random forests
## 
##   Variables to impute:       Ozone, Solar.R, Wind, Temp, Month, Day
##   Variables used to impute:  Ozone, Solar.R, Wind, Temp, Month, Day
## 
## iter 1
##   |                                                                              |                                                                      |   0%  |                                                                              |============                                                          |  17%  |                                                                              |=======================                                               |  33%  |                                                                              |===================================                                   |  50%  |                                                                              |===============================================                       |  67%  |                                                                              |==========================================================            |  83%  |                                                                              |======================================================================| 100%
## iter 2
##   |                                                                              |                                                                      |   0%  |                                                                              |============                                                          |  17%  |                                                                              |=======================                                               |  33%  |                                                                              |===================================                                   |  50%  |                                                                              |===============================================                       |  67%  |                                                                              |==========================================================            |  83%  |                                                                              |======================================================================| 100%
## iter 3
##   |                                                                              |                                                                      |   0%  |                                                                              |============                                                          |  17%  |                                                                              |=======================                                               |  33%  |                                                                              |===================================                                   |  50%  |                                                                              |===============================================                       |  67%  |                                                                              |==========================================================            |  83%  |                                                                              |======================================================================| 100%
# Ref: https://www.youtube.com/watch?v=Akb401i32Oc