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))
}
# sample ugly data
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))
# counts:
> summarise_all(df, ~sum(is_missing(.)))
a b c d e
1 3 1 3 0 2
# percentage:
> summarise_all(df, ~(sum(is_missing(.) / nrow(df))))
a b c d e
1 0.75 0.25 0.75 0 0.5
person
sbha
schedule
14.03.2020
table
символи и ще трябва да анализирате броя на NA. - person Joshua Ulrich   schedule 30.11.2011