R/parse_gender.R

Defines functions parse_gender

Documented in parse_gender

#' Parse gender data and fortify with a standardized, ternary gender field
#'
#' @param data A data.frame or something coercible to this
#' @param gender.field An unquoted field within 'data' where gender data lies
#' @param parsed.gender An unquoted field name to be appended to 'data'
#'
#' @return The input data.frame fortified with a standardized gender column
#'
#' @export
#'
parse_gender <- function(data,
                         gender.field = gender_identity,
                         parsed.gender = gender) {
  require(dplyr)
  require(stringr)

  gender.field <- enquo(gender.field)

  stopifnot(is.data.frame(data))

  data <- data %>%
    mutate({{ parsed.gender }} := case_when(
      str_detect(!!gender.field, "^[M|m](ale)$")   ~ "Male",
      str_detect(!!gender.field, "^[M|m](an)$")    ~ "Male",
      str_detect(!!gender.field, "^[F|f](emale)$") ~ "Female",
      str_detect(!!gender.field, "^[W|w](oman)$")  ~ "Female",
      TRUE                                         ~ "Nonbinary"))

  return(data)
}
cmstillwell/UWparserrr documentation built on Nov. 11, 2024, 10:38 p.m.