R/extract_negative_controls.R

Defines functions extract_negative_controls

Documented in extract_negative_controls

#' Extract negative controls
#'
#' @param drug_medications A tibble
#' @param num_rxcui_ingr A number
#' @param num_samples A number
#' @param str_negative_controls A string
#' @return A tibble \code{drug_negative_controls}
#' @export

extract_negative_controls <- function(drug_medications, num_rxcui_ingr, num_samples, str_negative_controls) {

  # At least 1% of cases exposed to `rxcui_ingr`
  cases_drug_medications <-
    drug_medications %>%
    filter(groupc == 1)

  one_percent_cohort <- round((0.01)*(n_distinct(cases_drug_medications$person_id)), 0)

  cases_rxcui_ingr <-
    cases_drug_medications %>%
    group_by(rxcui_ingr) %>%
    summarise(n = n()) %>%
    arrange(desc(n))

  cases_rxcui_ingr <-
    cases_rxcui_ingr %>%
    filter(n > one_percent_cohort)

  # Remove object drug
  cases_rxcui_ingr <-
    cases_rxcui_ingr %>%
    filter(rxcui_ingr != num_rxcui_ingr)

  df_negative_controls <- read_csv(str_negative_controls, col_types = cols())

  drug_negative_controls <-
    inner_join(
      df_negative_controls,
      cases_rxcui_ingr,
      by = 'rxcui_ingr'
    )

  # Sample 30 drugs randomly
  drug_negative_controls <-
    sample_n(drug_negative_controls, num_samples, replace = FALSE)

  # Label as negative_control
  drug_negative_controls$group = "negative_control"

  return(drug_negative_controls)
}
patrickwu510/ddiwas documentation built on June 26, 2020, 6:56 a.m.