brad-cannell / bfuncs

A random smattering of Brad's Functions
MIT License
2 stars 0 forks source link

Add merge_like_variables function #39

Open mbcann01 opened 6 years ago

mbcann01 commented 6 years ago

I created this function for the DETECT 5-week pilot analysis. It's probably worth adding to bfuncs for future use. Just don't have time to do it now.

merge_like_variables <- function(.data, .x) {
  # Setup
  var <- enquo(.x) %>% quo_name()
  var_x <- paste(var, "x", sep = ".") %>% rlang::sym()
  var_y <- paste(var, "y", sep = ".") %>% rlang::sym()

  # Merge
  .data %>%
    mutate(
      out = case_when(
        is.na(!!var_x) ~ !!var_y %>% as.character(), # IF .x is missing use .y
        is.na(!!var_y) ~ !!var_x %>% as.character(), # IF .y is missing use .x
        !!var_x != !!var_y ~ "conflict",             # IF neither missing test for conflict
        TRUE ~ !!var_x %>% as.character()            # IF neither missing and no conflict just use .x
      )
    ) %>%
    pull(out)
}