R/md.value.R

Defines functions md.value

Documented in md.value

#' missing value proportion
#'
#' @param data dataframe or list
#'
#' @return dataframe
#' @export
#'
md.value <- function(data){
    if (!is.data.frame(data)){
        for (i in 1:length(data)) {
            data[[i]] <- cbind(Year=names(data)[i],data[[i]])
        }
        data <- do.call(plyr::rbind.fill,data)
    }
    ms <- lapply(unique(data$Year), function(i){
        sapply(set::not(colnames(data),'Year','seqn','sdmvpsu','sdmvstra'), function(j){
            (data[data$Year==i,j] |> is.na() |> sum()/
                 data[data$Year==i,j] |> length() * 100) |> round(2)
        }) |> t() |> as.data.frame()
    }) |> do.call(what = plyr::rbind.fill)
    row.names(ms) <- unique(data$Year)
    oa <- round((colSums(is.na(data[,set::not(colnames(data),'Year','seqn','sdmvpsu','sdmvstra')]))/nrow(data)*100),2) |>
        t() |> data.frame(row.names = 'overall')
    rbind(oa,ms)
}
yikeshu0611/nhanesR documentation built on Jan. 29, 2022, 6:08 a.m.