NA値の確認と検出に大変便利なコマンドと複数のプロットコマンドが収録されている大変便利なパッケージの紹介です。 NA値の確認と検出に特化しているのでプロットをカラフルにする必要はないと思いますが、ggplot2のコマンドでプロットの体裁を調整することが可能です。
パッケージバージョンは0.6.1。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール
install.packages("naniar")
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
#パッケージの読み込み
library("naniar")
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
install.packages("tidyverse");require("tidyverse")
}
###データ例の作成#####
set.seed(12345)
n <- 300
TestData <- tibble(Group = sample(paste0("Group", 1:2), n,
replace = TRUE),
Data1 = sample(c(1:50, NA), n, replace = TRUE),
Data2 = sample(c(100:110, NA), n, replace = TRUE))
#データ内容の確認
TestData
# A tibble: 300 x 3
Group Data1 Data2
<chr> <int> <int>
1 Group1 18 103
2 Group1 22 102
3 Group1 35 107
4 Group2 37 109
5 Group2 25 104
6 Group1 49 102
7 Group1 37 110
8 Group2 30 100
9 Group2 7 106
10 Group1 26 NA
# ... with 290 more rows
#欠損値の数を数える
TestData %>%
count(is.na(.))
# A tibble: 4 x 2
# A tibble: 4 x 2
`is.na(.)`[,"Group"] [,"Data1"] [,"Data2"] n
<lgl> <lgl> <lgl> <int>
1 FALSE FALSE FALSE 267
2 FALSE FALSE TRUE 25
3 FALSE TRUE FALSE 7
4 FALSE TRUE TRUE 1
########
#欠損値の数を指標ごとに表示:miss_var_summaryコマンド
miss_var_summary(TestData)
# A tibble: 3 x 3
variable n_miss pct_miss
<chr> <int> <dbl>
1 Data2 26 8.67
2 Data1 8 2.67
3 Group 0 0
#欠損値の数をケースごとに表示:miss_var_summaryコマンド
miss_case_summary(TestData)
# A tibble: 300 x 3
case n_miss pct_miss
<int> <int> <dbl>
1 95 2 66.7
2 10 1 33.3
3 11 1 33.3
4 17 1 33.3
5 19 1 33.3
6 58 1 33.3
7 71 1 33.3
8 77 1 33.3
9 84 1 33.3
10 90 1 33.3
# ... with 290 more rows
#データの欠損値の位置を表示:as_shadowコマンド
as_shadow(TestData)
# A tibble: 300 x 3
Group_NA Data1_NA Data2_NA
<fct> <fct> <fct>
1 !NA !NA !NA
2 !NA !NA !NA
3 !NA !NA !NA
4 !NA !NA !NA
5 !NA !NA !NA
6 !NA !NA !NA
7 !NA !NA !NA
8 !NA !NA !NA
9 !NA !NA !NA
10 !NA !NA NA
# ... with 290 more rows
#データ内容と合わせて欠損値の位置を確認:nabularコマンド
nabular(TestData, only_miss = FALSE)
# A tibble: 300 x 6
Group Data1 Data2 Group_NA Data1_NA Data2_NA
<chr> <int> <int> <fct> <fct> <fct>
1 Group1 18 103 !NA !NA !NA
2 Group1 22 102 !NA !NA !NA
3 Group1 35 107 !NA !NA !NA
4 Group2 37 109 !NA !NA !NA
5 Group2 25 104 !NA !NA !NA
6 Group1 49 102 !NA !NA !NA
7 Group1 37 110 !NA !NA !NA
8 Group2 30 100 !NA !NA !NA
9 Group2 7 106 !NA !NA !NA
10 Group1 26 NA !NA !NA NA
# ... with 290 more rows
###例えばnabularコマンドとggplot2の組み合わせ#####
TestData %>%
bind_shadow() %>%
ggplot(aes(x = Data1,
fill = Data2_NA)) +
geom_density(alpha = 0.2) +
scale_fill_manual(values = c("#a87963", "red"))
########
#欠損値をプロットで表示:vis_missコマンド
#ggplot2のコマンドが適応可能です。
vis_miss(TestData)
#upset形式で欠損値を表示:gg_miss_upsetコマンド
#「UpSetR」パッケージ:https://www.karada-good.net/analyticsr/r-152/
gg_miss_upset(TestData, sets.bar.color = c("#a87963", "red"))
#欠損値をバーで表示:gg_miss_varコマンド
#紹介バージョンでは凡例表示に関するWarning messageが表示されます
#非表示にするためにthemeコマンドで凡例を非表示にしています
gg_miss_var(TestData, facet = Group) +
theme(legend.position = "none")
#欠損値のデータを表示してプロット:geom_miss_pointコマンド
ggplot(TestData, aes(x = Data1, y = Data2)) +
geom_miss_point() +
facet_grid(~Group)
#欠損値をヒートマップで表示:gg_miss_fctコマンド
#表示する変数を指定:fctオプション
gg_miss_fct(TestData, fct = Group)
#どのデータが欠損値を含むか表示:gg_miss_whichコマンド
gg_miss_which(TestData) +
scale_fill_manual(values = c("#a87963", "red"))
出力例
・例えばnabularコマンドとggplot2の組み合わせ

・vis_missコマンド

・gg_miss_upsetコマンド

・その他、 実行コマンドで出力可能なプロット
少しでも、あなたの解析が楽になりますように!!