#' Characterizes only variables of a data set with missing values. So, missing values are painted
#' black, while other observations keep white.
#'
#' @param data [\code{data.frame}]\cr
#' Data to summarize. Columns can be of type numeric, integer, logical, factor or character.
#' Characters and logicals will be treated as factors.
#' @return Names of the variables with their frequency of missing values and an additional plot
#' which shows the position of the missing values (color = black) for each variable with NAs.
#'
#' @export
#' @title Giving an image of a dataset with missing values
summaryNA = function(dataset, show.plot = F, margin.left = 4) {
num = as.numeric(which(apply(is.na(dataset), 2, any)))
if (length(num) > 0) {
cat("Variables with NAs: ", colnames(dataset)[num], "\n")
cat("Number of NAs: ", colSums(is.na(dataset[, num, drop = F])), "\n")
dataset.new = dataset[, num, drop = F]
color = apply(dataset.new, 2, function(x) as.integer(is.na(x)))
if (show.plot) {
image(color, col = c("white", "black"), yaxt = "n")
par(mar = c(5, margin.left, 4, 2) + 0.1)
abline(v = -0.001)
abline(h = 1.015)
if (length(num) == 1) {
y.type = 0
} else {
y.type = 0:(ncol(dataset.new) - 1) / (length(dataset.new) - 1)
}
axis(2, labels = colnames(dataset.new), at = y.type, las = 2)
}
}
else {
cat("There are no missing values in this dataset!!!", "\n")
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.