dplyr
カウントを取得するためのソリューションは次のようになります。
summarise_all(df, ~sum(is.na(.)))
またはパーセンテージを取得するには:
summarise_all(df, ~(sum(is_missing(.) / nrow(df))))
また、欠落しているデータは醜く、一貫性がなくNA
、ソースやインポート時の処理方法に応じてコード化されるとは限らないことにも注意してください。次の関数は、データと不足していると見なしたいものに応じて微調整できます。
is_missing <- function(x){
missing_strs <- c('', 'null', 'na', 'nan', 'inf', '-inf', '-9', 'unknown', 'missing')
ifelse((is.na(x) | is.nan(x) | is.infinite(x)), TRUE,
ifelse(trimws(tolower(x)) %in% missing_strs, TRUE, FALSE))
}
df <- data.frame(a = c(NA, '1', ' ', 'missing'),
b = c(0, 2, NaN, 4),
c = c('NA', 'b', '-9', 'null'),
d = 1:4,
e = c(1, Inf, -Inf, 0))
> summarise_all(df, ~sum(is_missing(.)))
a b c d e
1 3 1 3 0 2
> summarise_all(df, ~(sum(is_missing(.) / nrow(df))))
a b c d e
1 0.75 0.25 0.75 0 0.5
table
文字の結果であり、NAの数を解析する必要があります。