Skip to content

Commit

Permalink
Merge pull request #112 from jimhester/rowSums
Browse files Browse the repository at this point in the history
Use rowSums / rowMeans to compute row-wise summaries
  • Loading branch information
njtierney committed Dec 14, 2017
2 parents abd6aa6 + 67153e1 commit 9e40b7a
Showing 1 changed file with 7 additions and 29 deletions.
36 changes: 7 additions & 29 deletions R/add-n-prop-miss.R
Original file line number Diff line number Diff line change
Expand Up @@ -27,29 +27,17 @@
add_n_miss <- function(data, ..., label = "n_miss"){

if (missing(...)) {
purrrlyr::by_row(.d = data,
..f = function(x) n_miss(x),
.collate = "row",
.to = paste0(label,"_all"))
data[[paste0(label, "_all")]] <- rowSums(is.na(data))
} else {

quo_vars <- rlang::quos(...)

selected_data <- dplyr::select(data, !!!quo_vars)

prop_selected_data <- purrrlyr::by_row(.d = selected_data,
..f = function(x) n_miss(x),
.collate = "row",
.to = paste0(label,"_vars"))

# add only the variables prop_miss function, not the whole data.frame...
prop_selected_data_cut <- prop_selected_data %>%
dplyr::select(!!as.name(paste0(label,"_vars")))

dplyr::bind_cols(data, prop_selected_data_cut) %>% dplyr::as_tibble()

data[[paste0(label, "_vars")]] <- rowSums(is.na(selected_data))
} # close else loop

data
}

#' Add column containing proportion of missing data values
Expand Down Expand Up @@ -98,26 +86,16 @@ add_n_miss <- function(data, ..., label = "n_miss"){
add_prop_miss <- function(data, ..., label = "prop_miss"){

if (missing(...)) {
purrrlyr::by_row(.d = data,
..f = function(x) (mean(is.na(x))),
.collate = "row",
.to = paste0(label,"_all"))
data[[paste0(label, "_all")]] <- rowMeans(is.na(data))
} else {

quo_vars <- rlang::quos(...)

selected_data <- dplyr::select(data, !!!quo_vars)

prop_selected_data <- purrrlyr::by_row(.d = selected_data,
..f = function(x) prop_miss(x),
.collate = "row",
.to = paste0(label,"_vars"))
data[[paste0(label, "_vars")]] <- rowMeans(is.na(selected_data))

# add only the variables prop_miss function, not the whole data.frame...
prop_selected_data_cut <- prop_selected_data %>%
dplyr::select(!!as.name(paste0(label,"_vars")))

dplyr::bind_cols(data, prop_selected_data_cut) %>% dplyr::as_tibble()
} # close else loop

}
data
}

0 comments on commit 9e40b7a

Please sign in to comment.