R/prep_top_substances.R

Defines functions prep_top_substances

Documented in prep_top_substances

#' Identify the top selling substances
#'
#' @import dplyr 
#' 
prep_top_substances <- function(bnvd_data, prop = 0.5) {

    calc_top_substances <- function(df, ...) {
        var_selected <- c(...)

        group_by_at(df, .vars = var_selected)                        %>%
            summarise(quantite = sum(quantite))                      %>%
            ungroup()                                                %>%
            mutate(quantite_totale = sum(quantite))                  %>%
            mutate(quantite_prop = 100 * quantite / quantite_totale) %>%
            arrange(desc(quantite_prop))                             %>%
            mutate(quantite_cum = cumsum(quantite_prop))             %>%
            mutate(more_than_50 = quantite_cum >= prop * 100)        %>%
            slice(1:min(which(more_than_50)))                        %>%
            mutate(Rang = seq(n()))                                  %>%
            rename(`Part des ventes (%)` = quantite_prop)                %>%
            select_at(.vars = c(var_selected, "Rang", "Part des ventes (%)"))
    }

    bind_rows(
        calc_top_substances(df = bnvd_data, "substance") %>%
            arrange(Rang) %>%
            mutate(departement = "FRANCE"),
        group_by(bnvd_data, departement) %>%
            group_map(.f = function(df, ...) {
                calc_top_substances(df, "substance") %>%
                    arrange(Rang)})
    ) %>%
        select(departement, Rang,
               substance, `Part des ventes (%)`)
}
CedricMondy/afbBNVD documentation built on May 8, 2019, 9:53 p.m.