R/nom_zone.R

Defines functions trouver_zone code_zone nom_zone augmenter_liste_zone

Documented in augmenter_liste_zone code_zone nom_zone trouver_zone

# Pour retrouver les codes zones et noms zones des totaux qui ne sont pas présents dans liste_zone
#' augmenter_liste_zone() ajoute les lignes de totaux et sous totaux (France, province, DROM...) au df liste_zone
#' @return dataframe liste_zone avec ajout des lignes de total et sous total
#' @importFrom dplyr bind_rows
#' @importFrom tibble tribble
#'
augmenter_liste_zone <- function() {
  augment <- tibble::tribble(
    ~CodeZone, ~Zone, ~TypeZone, ~EPCI, ~NATURE_EPCI, ~DEP, ~REG,
    "FRMETRO", "France m\u00e9tropolitaine", "France", NA, NA, NA, NA,
    "FRMETRODROM", "France m\u00e9tropolitaine et DROM", "France", NA, NA, NA, NA,
    "FRPROV", "France de province", "France", NA, NA, NA, NA,
    "DROM", "D\u00e9partements et r\u00e9gions d'outre-mer", "France", NA, NA, NA, NA
  )
  res <- COGiter::liste_zone %>%
    dplyr::bind_rows(augment)
  return(res)
}
#' Obtenir le nom d'une zone
#'
#' @param type_zone Type de Zone
#' @param code_zone Code de la Zone
#'
#' @return une chaîne de caractère
#' @importFrom dplyr left_join pull
#' @export
#'
#' @examples
#' nom_zone(c("Communes", "Communes"), c("75056", "44109"))
nom_zone <- function(type_zone, code_zone) {
  filter <- data.frame(TypeZone = type_zone, CodeZone = code_zone)
  liste_zone <- augmenter_liste_zone()
  res <- filter %>%
    dplyr::left_join(liste_zone) %>%
    dplyr::pull(Zone)
  return(res)
}
#' Obtenir le code d'une zone
#'
#' @param type_zone Type de Zone
#' @param zone Nom de la Zone
#'
#' @return une chaîne de caractère
#' @importFrom dplyr left_join pull
#' @export
#'
#' @examples
#' code_zone("Communes", "Nantes")
code_zone <- function(type_zone, zone) {
  filter <- data.frame(TypeZone = type_zone, Zone = zone)
  liste_zone <- augmenter_liste_zone()
  res <- filter %>%
    dplyr::left_join(liste_zone) %>%
    dplyr::pull(CodeZone)
  return(res)
}

#' Trouver une zone à partir d'une chaîne de caractère
#'
#' @param pattern la chaîne de caractère à identifier
#'
#' @return un tibble
#' @export
#' @importFrom dplyr filter select
#' @importFrom stringr str_detect
#'
#' @examples
#' trouver_zone(pattern = "Belleville")
trouver_zone <- function(pattern) {
  liste_zone <- augmenter_liste_zone()
  res <- liste_zone %>%
    dplyr::filter(stringr::str_detect(Zone, pattern)) %>%
    dplyr::select(TypeZone, CodeZone, Zone)
  return(res)
}
MaelTheuliere/COGiter documentation built on Feb. 4, 2024, 8:48 p.m.