R/utils.R

Defines functions adbank_base remove_clutter

Documented in remove_clutter

#' Utilities for the maRketingscience package
#'
#' This function allows you to quickly create a dummy variable for controlling outliers
#' @keywords utilities for maRketingscience
#' @export
#' @examples
#' write_quick_sd()

## remove adbanks and log - this function should only be called on a set of adbanked variables!
remove_clutter <- function(input) {
  i2 <- input %>%
    str_remove_all(., "log_|lag_|05|10|15|20|30|40|50|60|70|80|90")
  return(i2)
}
## exemplary data
example_data <- data.frame(av = c(500, 512, 499, 530, 545, 513, 525),
                           tv_grp = c(100, 100, 0, 0, 0, 0, 0),
                           radio_grp = c(0, 0, 0, 50, 70, 0, 0))

#### Adbanking helpers start here
## define default adbanks for function calls
adbanks_default <- c(5, 10, 15, 20, 30, 40, 50, 60, 70, 80, 90)

## core function for adbanking of a Dataframe
adbank_base <- function(data_vec, var_name = "var.name", adbank_values = adbanks_default) {

  adbanks <- adbank_values

  ## define results matrix to be filled:
  step <- matrix(0, nrow = length(data_vec), ncol=length(adbanks)) %>%
    as.data.frame(.)
  resu <- cbind(data_vec, step)
  names(resu) <- c(var_name, paste0(var_name, adbanks))

  ## fill the first line:
  for (i in 2:ncol(resu)) {
    resu[1, i] <- resu[1, 1]*(adbanks[(i-1)]/100)
  }
  ## fill up the remaining cells:
  for (j in 2:ncol(resu)) {
    for (k in 2:nrow(resu)) {
      resu[k, j] <- resu[k, 1]*(adbanks[(j-1)]/100) + resu[(k-1), j]*(1-(adbanks[(j-1)]/100))
    }
  }
  return(resu)
}
benetheking/maRketingscience documentation built on May 17, 2022, 5:57 a.m.