├── vignettes └── .gitignore ├── .gitignore ├── Thumbs.db ├── tests ├── testthat.R └── testthat │ ├── test-calcul_flux_migres.R │ ├── test-ajout_libelles_nivgeo.R │ ├── test-ajout_nivgeo_supracomm.R │ └── test-chargement_fd_migcom.R ├── docs ├── Thumbs.db ├── logo_migr.png ├── reference │ ├── figures │ │ ├── Thumbs.db │ │ └── logo_migr.png │ ├── index.html │ ├── chargement_bd_histodemo.html │ ├── chargement_fd_migcom.html │ ├── calcul_flux_migres.html │ ├── ajout_libelles_varventil_insee.html │ ├── ajout_libelles_nivgeo.html │ └── calcul_indics_migres.html ├── articles │ ├── methodo_migr_files │ │ └── figure-html │ │ │ ├── Thumbs.db │ │ │ └── schema_pop_mig-1.png │ └── index.html ├── pkgdown.yml ├── link.svg ├── docsearch.js ├── pkgdown.js ├── authors.html ├── pkgdown.css └── index.html ├── logo_migr.png ├── .Rbuildignore ├── man ├── figures │ ├── Thumbs.db │ └── logo_migr.png ├── chargement_bd_histodemo.Rd ├── chargement_fd_migcom.Rd ├── calcul_flux_migres.Rd ├── ajout_libelles_nivgeo.Rd ├── calcul_indics_migres.Rd ├── creation_carto_supracomm.Rd ├── ajout_libelles_varventil_insee.Rd ├── calcul_indics_renouv.Rd ├── calcul_indics_histodemo.Rd └── ajout_nivgeo_supracomm.Rd ├── data ├── COMM_GRIDENS.RData └── REF_VARS_INSEE_FD_MIGCOM.RData ├── data-raw ├── miseajour_dev_migR.R ├── miseajour_datasets_annexes.R ├── annexes_dev_migR.R └── fil_explications.R ├── migR.Rproj ├── DESCRIPTION ├── NAMESPACE ├── README.md ├── README.Rmd └── R ├── ajout_libelles_varventil_insee.R ├── chargement_bd_histodemo.R ├── calcul_flux_migres.R ├── ajout_libelles_nivgeo.R ├── chargement_fd_migcom.R ├── calcul_indics_renouv.R ├── calcul_indics_migres.R ├── ajout_nivgeo_supracomm.R ├── creation_carto_supracomm.R └── calcul_indics_histodemo.R /vignettes/.gitignore: -------------------------------------------------------------------------------- 1 | *.html 2 | *.R 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Meta 2 | doc 3 | inst/doc 4 | .Rproj.user 5 | .Rhistory 6 | .RData 7 | -------------------------------------------------------------------------------- /Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/observatoire-territoires/migR/HEAD/Thumbs.db -------------------------------------------------------------------------------- /tests/testthat.R: -------------------------------------------------------------------------------- 1 | library(testthat) 2 | library(migR) 3 | 4 | test_check("migR") 5 | -------------------------------------------------------------------------------- /docs/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/observatoire-territoires/migR/HEAD/docs/Thumbs.db -------------------------------------------------------------------------------- /logo_migr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/observatoire-territoires/migR/HEAD/logo_migr.png -------------------------------------------------------------------------------- /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^Meta$ 2 | ^doc$ 3 | ^README\.Rmd$ 4 | ^data-raw$ 5 | ^.*\.Rproj$ 6 | ^\.Rproj\.user$ 7 | -------------------------------------------------------------------------------- /docs/logo_migr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/observatoire-territoires/migR/HEAD/docs/logo_migr.png -------------------------------------------------------------------------------- /man/figures/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/observatoire-territoires/migR/HEAD/man/figures/Thumbs.db -------------------------------------------------------------------------------- /data/COMM_GRIDENS.RData: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/observatoire-territoires/migR/HEAD/data/COMM_GRIDENS.RData -------------------------------------------------------------------------------- /man/figures/logo_migr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/observatoire-territoires/migR/HEAD/man/figures/logo_migr.png -------------------------------------------------------------------------------- /docs/reference/figures/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/observatoire-territoires/migR/HEAD/docs/reference/figures/Thumbs.db -------------------------------------------------------------------------------- /data/REF_VARS_INSEE_FD_MIGCOM.RData: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/observatoire-territoires/migR/HEAD/data/REF_VARS_INSEE_FD_MIGCOM.RData -------------------------------------------------------------------------------- /docs/reference/figures/logo_migr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/observatoire-territoires/migR/HEAD/docs/reference/figures/logo_migr.png -------------------------------------------------------------------------------- /tests/testthat/test-calcul_flux_migres.R: -------------------------------------------------------------------------------- 1 | context("test-calcul_flux_migres") 2 | 3 | test_that("multiplication works", { 4 | expect_equal(2 * 2, 4) 5 | }) 6 | -------------------------------------------------------------------------------- /tests/testthat/test-ajout_libelles_nivgeo.R: -------------------------------------------------------------------------------- 1 | context("test-ajout_libelles_nivgeo") 2 | 3 | test_that("multiplication works", { 4 | expect_equal(2 * 2, 4) 5 | }) 6 | -------------------------------------------------------------------------------- /tests/testthat/test-ajout_nivgeo_supracomm.R: -------------------------------------------------------------------------------- 1 | context("test-ajout_nivgeo_supracomm") 2 | 3 | test_that("multiplication works", { 4 | expect_equal(2 * 2, 4) 5 | }) 6 | -------------------------------------------------------------------------------- /tests/testthat/test-chargement_fd_migcom.R: -------------------------------------------------------------------------------- 1 | context("test-chargement_fd_migcom") 2 | 3 | test_that("multiplication works", { 4 | expect_equal(2 * 2, 4) 5 | }) 6 | -------------------------------------------------------------------------------- /docs/articles/methodo_migr_files/figure-html/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/observatoire-territoires/migR/HEAD/docs/articles/methodo_migr_files/figure-html/Thumbs.db -------------------------------------------------------------------------------- /docs/articles/methodo_migr_files/figure-html/schema_pop_mig-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/observatoire-territoires/migR/HEAD/docs/articles/methodo_migr_files/figure-html/schema_pop_mig-1.png -------------------------------------------------------------------------------- /data-raw/miseajour_dev_migR.R: -------------------------------------------------------------------------------- 1 | library(pkgdown) 2 | library(roxygen2) 3 | library(devtools) 4 | 5 | #générer doc .Rd 6 | roxygen2::roxygenise() 7 | 8 | 9 | #vignettes : 10 | devtools::build_vignettes() 11 | 12 | # pour générer les articles issues des vignettes 13 | pkgdown::build_articles(pkg = ".") 14 | 15 | 16 | # vérification de l'intégrité du package 17 | devtools::check() 18 | 19 | -------------------------------------------------------------------------------- /docs/pkgdown.yml: -------------------------------------------------------------------------------- 1 | pandoc: 1.19.2.1 2 | pkgdown: 1.1.0 3 | pkgdown_sha: ~ 4 | articles: 5 | tutorial_fonctions_migr: ../../../../../../../../../../../../N:/DST/SDOAS/BOT/RAPPORT/Rapport 6 | 2018/Travaux statistiques internes/orga_projet/package_R/migR/vignettes/tutorial_fonctions_migr.html 7 | methodo_migr: ../../../../../../../../../../../../N:/DST/SDOAS/BOT/RAPPORT/Rapport 8 | 2018/Travaux statistiques internes/orga_projet/package_R/migR/vignettes/methodo_migr.html 9 | 10 | -------------------------------------------------------------------------------- /migR.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | 3 | RestoreWorkspace: No 4 | SaveWorkspace: No 5 | AlwaysSaveHistory: Default 6 | 7 | EnableCodeIndexing: Yes 8 | UseSpacesForTab: Yes 9 | NumSpacesForTab: 2 10 | Encoding: UTF-8 11 | 12 | RnwWeave: Sweave 13 | LaTeX: pdfLaTeX 14 | 15 | AutoAppendNewline: Yes 16 | StripTrailingWhitespace: Yes 17 | 18 | BuildType: Package 19 | PackageUseDevtools: Yes 20 | PackageInstallArgs: --no-multiarch --with-keep.source 21 | PackageRoxygenize: rd,collate,namespace,vignette 22 | -------------------------------------------------------------------------------- /data-raw/miseajour_datasets_annexes.R: -------------------------------------------------------------------------------- 1 | load("./data/REF_VARS_INSEE_FD_MIGCOM.rdata") 2 | View(REF_VARS_INSEE_FD_MIGCOM) 3 | 4 | # vérifications que les libellés des modalités du nouveau millésime n'ont pas changé 5 | # vs documentation fichier détail Insee 6 | 7 | # si c'est ok, réplication des libellés 2015 pour 2016 8 | library(tidyverse) 9 | REF_VARS_INSEE_FD_MIGCOM <- 10 | REF_VARS_INSEE_FD_MIGCOM %>% 11 | rbind.data.frame(REF_VARS_INSEE_FD_MIGCOM %>% 12 | filter(millesime_FD == 2015)%>% 13 | mutate(millesime_FD = 2016)) 14 | 15 | # sauvegarde du nouveau référentiel en .rdata 16 | save(REF_VARS_INSEE_FD_MIGCOM, file="./data/REF_VARS_INSEE_FD_MIGCOM.RData") 17 | -------------------------------------------------------------------------------- /docs/link.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Package: migR 2 | Title: Analyse territoriale des migrations résidentielles internes 3 | Version: 0.0.0.9000 4 | Authors@R: c( 5 | person("Observatoire des Territoires", email = "observatoire@cget.gouv.fr", role = c("cre", "aut")), 6 | person("Joel", "Gombin", email = "joel.gombin@gmail.com", role = "aut")) 7 | Maintainer: Observatoire des Territoires 8 | Description: Traitements sur les fichiers décrivant les migrations résidentielles (RP Insee), calcul du volume de migrations inter-territoriales et d'indicateurs caractérisant l'ampleur quantitative des phénomènes migratoires internes ainsi que leur impact sur la composition socio-démographique de la population au sein des territoires. 9 | License: GPL-3 10 | Encoding: UTF-8 11 | URL: https://observatoire-territoires.github.io/migR/, http://github.com/observatoire-territoires/migR 12 | BugReports: http://github.com/observatoire-territoires/migR/issues 13 | LazyData: true 14 | Suggests: 15 | knitr, 16 | rmarkdown, 17 | testthat 18 | VignetteBuilder: knitr 19 | Depends: 20 | readr, 21 | dplyr, 22 | tibble, 23 | magrittr, 24 | janitor, 25 | COGugaison, 26 | utils, 27 | tidyr, 28 | stringr, 29 | rlang, 30 | rmapshaper, 31 | magrittr, 32 | sf, 33 | readxl, 34 | Insee2MonetDB 35 | Remotes: joelgombin/Insee2MonetDB 36 | RoxygenNote: 6.1.1 37 | -------------------------------------------------------------------------------- /NAMESPACE: -------------------------------------------------------------------------------- 1 | # Generated by roxygen2: do not edit by hand 2 | 3 | export(ajout_libelles_nivgeo) 4 | export(ajout_libelles_varventil_insee) 5 | export(ajout_nivgeo_supracomm) 6 | export(calcul_flux_migres) 7 | export(calcul_indics_histodemo) 8 | export(calcul_indics_migres) 9 | export(calcul_indics_renouv) 10 | export(chargement_bd_histodemo) 11 | export(chargement_fd_migcom) 12 | export(creation_carto_supracomm) 13 | import(COGugaison) 14 | import(sf) 15 | importFrom(Insee2MonetDB,Insee2MonetDB) 16 | importFrom(dplyr,"%>%") 17 | importFrom(dplyr,bind_rows) 18 | importFrom(dplyr,case_when) 19 | importFrom(dplyr,distinct) 20 | importFrom(dplyr,everything) 21 | importFrom(dplyr,filter) 22 | importFrom(dplyr,funs) 23 | importFrom(dplyr,group_by) 24 | importFrom(dplyr,left_join) 25 | importFrom(dplyr,mutate) 26 | importFrom(dplyr,mutate_all) 27 | importFrom(dplyr,mutate_if) 28 | importFrom(dplyr,pull) 29 | importFrom(dplyr,rename) 30 | importFrom(dplyr,select) 31 | importFrom(dplyr,summarise) 32 | importFrom(dplyr,tribble) 33 | importFrom(dplyr,ungroup) 34 | importFrom(dplyr,vars) 35 | importFrom(magrittr,set_colnames) 36 | importFrom(readr,read_csv) 37 | importFrom(readxl,read_excel) 38 | importFrom(rlang,sym) 39 | importFrom(rmapshaper,ms_simplify) 40 | importFrom(stringr,str_replace) 41 | importFrom(tibble,as_tibble) 42 | importFrom(tibble,tribble) 43 | importFrom(tidyr,gather) 44 | importFrom(tidyr,spread) 45 | importFrom(utils,download.file) 46 | importFrom(utils,unzip) 47 | -------------------------------------------------------------------------------- /man/chargement_bd_histodemo.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/chargement_bd_histodemo.R 3 | \name{chargement_bd_histodemo} 4 | \alias{chargement_bd_histodemo} 5 | \title{Charger une base de données de séries historiques de population de l'Insee} 6 | \usage{ 7 | chargement_bd_histodemo(telechargement = FALSE, dossier_dest_TL, 8 | chemin_FD) 9 | } 10 | \arguments{ 11 | \item{telechargement}{Vaut TRUE si le fichier doit être téléchargé depuis le site internet de l'Insee, FALSE si le fichier xls est disponible en local.} 12 | 13 | \item{dossier_dest_TL}{Dossier de destination où va être stockée l'archive zip et le fichier xls dézippé. S'il n'existe pas, il sera créé. Non renseigné si telechargement vaut FALSE.} 14 | 15 | \item{chemin_FD}{Lien vers le fichier xls (base-cc-serie-historique-AAAA.xls) en local. Non renseigné si telechargement vaut TRUE.} 16 | } 17 | \value{ 18 | Retourne une table communale contenant les informations de population/naissances/décès par période inter-censitaire depuis 1968. 19 | } 20 | \description{ 21 | Télécharger la base de données "séries historiques" contenant les informations de démographique par période intercensitaire depuis 1968 depuis le site de l'Insee puis le monter en mémoire, ou uniquement la charger si le fichier xls est disponible en local. 22 | } 23 | \examples{ 24 | \dontrun{ 25 | # Téléchargement du fichier "séries historiques" du dernier RP en date depuis le site internet de l'Insee dans le dossier "./data" 26 | COMM_HISTODEMO_2016 <- chargement_bd_histodemo(telechargement = TRUE, dossier_dest_TL = "./data") 27 | 28 | # Chargement du fichier xls "séries historiques" disponible en local 29 | COMM_HISTODEMO_2016 <- chargement_bd_histodemo(chemin_FD = "./data/base-cc-serie-historique-2016/base-cc-serie-historique-2016.xls") 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /man/chargement_fd_migcom.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/chargement_fd_migcom.R 3 | \name{chargement_fd_migcom} 4 | \alias{chargement_fd_migcom} 5 | \title{Charger un fichier détail MIGCOM de l'Insee} 6 | \usage{ 7 | chargement_fd_migcom(telechargement = FALSE, monet = TRUE, anneeRP, 8 | dossier_dest_TL, chemin_FD) 9 | } 10 | \arguments{ 11 | \item{telechargement}{Vaut TRUE si le fichier doit être téléchargé depuis le site internet de l'Insee, FALSE si le fichier txt est disponible en local.} 12 | 13 | \item{monet}{Vaut TRUE si le fichier détail doit être importé dans une base de données `MonetDBLite`, FALSE s'il doit être importé en mémoire vive.} 14 | 15 | \item{anneeRP}{Millésime du recensement de la population (RP) de l'Insee. Peut prendre les valeurs "2008", "2013", "2014", "2015" ou "2016". Non renseigné si telechargement vaut TRUE.} 16 | 17 | \item{dossier_dest_TL}{Dossier de destination où va être stockée l'archive zip et les fichiers txt dézippés. S'il n'existe pas, il sera créé. Non renseigné si telechargement vaut FALSE.} 18 | 19 | \item{chemin_FD}{Lien vers le fichier txt (FD_MIGCOM) en local. Non renseigné si telechargement vaut TRUE.} 20 | } 21 | \value{ 22 | Retourne une table de détail des migrations résidentielles avec pour chaque individu sa commune de résidence actuelle et commune de résidence antérieure. 23 | } 24 | \description{ 25 | Télécharger un fichier détail MIGCOM (Migrations résidentielles entre commune de résidence et commune de résidence antérieure) depuis le site de l'Insee puis le monter en mémoire, ou uniquement le charger si le fichier txt est disponible en local. 26 | } 27 | \examples{ 28 | \dontrun{ 29 | # Téléchargement du fichier MIGCOM du dernier RP en date depuis le site internet de l'Insee dans le dossier "./data" 30 | FD_MIGCOM_2016 <- chargement_fd_migcom(anneeRP = "2016", telechargement = TRUE, dossier_dest_TL = "./data") 31 | 32 | # Chargement du fichier txt MIGCOM disponible en local 33 | FD_MIGCOM_2016 <- chargement_fd_migcom(chemin_FD = "./data/RP2016_MIGCOM_csv/FD_MIGCOM_2016.csv") 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | # migR 5 | 6 | # Analyse des migrations résidentielles 7 | 8 | L’objectif du package `migR` est de faciliter l’exploitation des 9 | fichiers du recensement de l’Insee décrivant les migrations 10 | résidentielles. Il propose également des indicateurs quantifiant les 11 | échanges entre territoires à plusieurs échelles géographiques, ainsi 12 | que des indicateurs caractérisant l’impact des migrations dans la 13 | composition socio-démographique des territoires. Le package `migR` a été 14 | réalisé dans le cadre de la rédaction du rapport de l’Observatoire des 15 | Territoires portant sur les migrations résidentielles. 16 | 17 | ## Installation 18 | 19 | Le package `migR` peut être installé avec la commande suivante : 20 | 21 | ``` r 22 | library(devtools) 23 | devtools::install_github("observatoire-territoires/migR") 24 | library(migR) 25 | ``` 26 | 27 | ## Documentation 28 | 29 | Deux articles sont en ligne : 30 | 31 | - une [note 32 | méthodologique](https://observatoire-territoires.github.io/migR/articles/methodo_migr.html) 33 | présentant les concepts nécessaires à l’étude des migrations 34 | résidentielles. 35 | - un 36 | [tutoriel](https://observatoire-territoires.github.io/migR/articles/tutorial_fonctions_migr.html) 37 | détaillant les fonctions du package. 38 | 39 | La principale source statistique utilisée est le [fichier détail de 40 | l’Insee](https://www.insee.fr/fr/statistiques/4171543?sommaire=4171558) 41 | décrivant les mobilités résidentielles. Les packages 42 | [COGugaison](https://github.com/antuki/COGugaison) pour la gestion des 43 | géographies et 44 | [Insee2MonetDB](https://github.com/joelgombin/Insee2MonetDB) pour le 45 | chargement des données ont particulièrement été mis à contribution. 46 | 47 | ### Contact 48 | 49 | Des questions ? Des commentaires sur le package `migR` ou sur le rapport 50 | ? [Boite contact de l’Observatoire des 51 | Territoires](mailto:observatoire@cget.gouv.fr)\! 52 | 53 | Il est également possible de contribuer au package `migR` via une 54 | [PR](https://github.com/observatoire-territoires/migR/pulls) ou remonter 55 | un problème en [ouvrant une 56 | issue](https://github.com/observatoire-territoires/migR/issues). 57 | -------------------------------------------------------------------------------- /docs/docsearch.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | 3 | // register a handler to move the focus to the search bar 4 | // upon pressing shift + "/" (i.e. "?") 5 | $(document).on('keydown', function(e) { 6 | if (e.shiftKey && e.keyCode == 191) { 7 | e.preventDefault(); 8 | $("#search-input").focus(); 9 | } 10 | }); 11 | 12 | $(document).ready(function() { 13 | // do keyword highlighting 14 | /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ 15 | var mark = function() { 16 | 17 | var referrer = document.URL ; 18 | var paramKey = "q" ; 19 | 20 | if (referrer.indexOf("?") !== -1) { 21 | var qs = referrer.substr(referrer.indexOf('?') + 1); 22 | var qs_noanchor = qs.split('#')[0]; 23 | var qsa = qs_noanchor.split('&'); 24 | var keyword = ""; 25 | 26 | for (var i = 0; i < qsa.length; i++) { 27 | var currentParam = qsa[i].split('='); 28 | 29 | if (currentParam.length !== 2) { 30 | continue; 31 | } 32 | 33 | if (currentParam[0] == paramKey) { 34 | keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); 35 | } 36 | } 37 | 38 | if (keyword !== "") { 39 | $(".contents").unmark({ 40 | done: function() { 41 | $(".contents").mark(keyword); 42 | } 43 | }); 44 | } 45 | } 46 | }; 47 | 48 | mark(); 49 | }); 50 | }); 51 | 52 | /* Search term highlighting ------------------------------*/ 53 | 54 | function matchedWords(hit) { 55 | var words = []; 56 | 57 | var hierarchy = hit._highlightResult.hierarchy; 58 | // loop to fetch from lvl0, lvl1, etc. 59 | for (var idx in hierarchy) { 60 | words = words.concat(hierarchy[idx].matchedWords); 61 | } 62 | 63 | var content = hit._highlightResult.content; 64 | if (content) { 65 | words = words.concat(content.matchedWords); 66 | } 67 | 68 | // return unique words 69 | var words_uniq = [...new Set(words)]; 70 | return words_uniq; 71 | } 72 | 73 | function updateHitURL(hit) { 74 | 75 | var words = matchedWords(hit); 76 | var url = ""; 77 | 78 | if (hit.anchor) { 79 | url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; 80 | } else { 81 | url = hit.url + '?q=' + escape(words.join(" ")); 82 | } 83 | 84 | return url; 85 | } 86 | -------------------------------------------------------------------------------- /man/calcul_flux_migres.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/calcul_flux_migres.R 3 | \name{calcul_flux_migres} 4 | \alias{calcul_flux_migres} 5 | \title{Calculer le volume de migrations résidentielles entre zones} 6 | \usage{ 7 | calcul_flux_migres(TABLE, NIVGEO_ANTE, NIVGEO_ACTU, VAR_NB, 8 | VAR_VENTIL = NULL, MIG_NET_INTERNE = TRUE) 9 | } 10 | \arguments{ 11 | \item{TABLE}{Table en entrée contenant un champ de résidence actuelle et un champ de résidence antérieure sur le même niveau géographique (communes, départements, etc...).} 12 | 13 | \item{NIVGEO_ANTE}{Nom du champ de la table en entrée contenant le niveau géographique de résidence antérieure.} 14 | 15 | \item{NIVGEO_ACTU}{Nom du champ de la table en entrée contenant le niveau géographique de résidence actuelle.} 16 | 17 | \item{VAR_NB}{Nom du champ de la table en entrée contenant l'indicateur de pondération du tuple.} 18 | 19 | \item{VAR_VENTIL}{Nom du champ de la variable de ventilation de la population, de type tranche d'âge, groupe socio-professionnel, etc... (facultatif).} 20 | 21 | \item{MIG_NET_INTERNE}{Vaut TRUE si le calcul doit se faire uniquement sur les zones présentes à la fois en résidence actuelle et en résidence antérieure.} 22 | } 23 | \value{ 24 | Renvoie une table contenant un champ de résidence actuelle, un champ de résidence antérieure et un champ du nombre de migrations résidentielles entre chaque coupe de zones. 25 | } 26 | \description{ 27 | A partir d'une table en entrée contenant un champ de résidence actuelle et un champ de résidence antérieure sur le même niveau géographique. 28 | } 29 | \examples{ 30 | \dontrun{ 31 | # Calcul de la table de nombre de migrations entre résidence actuelle et résidence antérieure au niveau départemental 32 | flux_migres_DEP <- 33 | calcul_flux_migres(TABLE =FD_MIGCOM_2016 , 34 | VAR_NB = "IPONDI", 35 | MIG_NET_INTERNE=TRUE, 36 | NIVGEO_ANTE ="DEP_ANTE", 37 | NIVGEO_ACTU ="DEP_ACTU") 38 | # Calcul de la table de nombre de migrations entre résidence actuelle et résidence antérieure au niveau régional, et ventilés par groupe socio-professionel 39 | flux_migres_REG_CS1 <- 40 | calcul_flux_migres(TABLE =FD_MIGCOM_2016 , 41 | VAR_NB = "IPONDI", 42 | VAR_VENTIL = "CS1", 43 | MIG_NET_INTERNE=TRUE, 44 | NIVGEO_ANTE ="REG_ANTE", 45 | NIVGEO_ACTU ="REG_ACTU") 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /README.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: github_document 3 | --- 4 | 5 | 6 | 7 | ```{r setup, echo = FALSE} 8 | knitr::opts_chunk$set( 9 | collapse = TRUE, 10 | comment = "#>", 11 | fig.path = "man/figures", 12 | out.width = "100%" 13 | ) 14 | ``` 15 | migR 16 | ========================================================= 17 | 18 | # Analyse des migrations résidentielles 19 | 20 | L'objectif du package `migR` est de faciliter l'exploitation des fichiers du recensement de l'Insee décrivant les migrations résidentielles. Il propose également des indicateurs quantifiant les échanges entre territoires à plusieurs échelles géographiques, ainsi que des indicateurs caractérisant l'impact des migrations dans la composition socio-démographique des territoires. 21 | Le package `migR` a été réalisé dans le cadre de la rédaction du rapport de l'Observatoire des Territoires portant sur les migrations résidentielles. 22 | 23 | ## Installation 24 | 25 | Le package `migR` peut être installé avec la commande suivante : 26 | 27 | ```{r eval=FALSE} 28 | library(devtools) 29 | devtools::install_github("observatoire-territoires/migR") 30 | library(migR) 31 | ``` 32 | 33 | 34 | ## Documentation 35 | 36 | Deux articles sont en ligne : 37 | 38 | - une [note méthodologique](https://observatoire-territoires.github.io/migR/articles/methodo_migr.html) présentant les concepts nécessaires à l'étude des migrations résidentielles. 39 | - un [tutoriel](https://observatoire-territoires.github.io/migR/articles/tutorial_fonctions_migr.html) détaillant les fonctions du package. 40 | 41 | La principale source statistique utilisée est le [fichier détail de l'Insee](https://www.insee.fr/fr/statistiques/4171543?sommaire=4171558) décrivant les mobilités résidentielles. Les packages [COGugaison](https://github.com/antuki/COGugaison) pour la gestion des géographies et [Insee2MonetDB](https://github.com/joelgombin/Insee2MonetDB) pour le chargement des données ont particulièrement été mis à contribution. 42 | 43 | 44 | ### Contact 45 | 46 | Des questions ? Des commentaires sur le package `migR` ou sur le rapport ? [Boite contact de l'Observatoire des Territoires](mailto:observatoire@cget.gouv.fr)! 47 | 48 | Il est également possible de contribuer au package `migR` via une [PR](https://github.com/observatoire-territoires/migR/pulls) ou remonter un problème en [ouvrant une issue](https://github.com/observatoire-territoires/migR/issues). 49 | -------------------------------------------------------------------------------- /man/ajout_libelles_nivgeo.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/ajout_libelles_nivgeo.R 3 | \name{ajout_libelles_nivgeo} 4 | \alias{ajout_libelles_nivgeo} 5 | \title{Ajouter le libellé d'une unité géographique} 6 | \usage{ 7 | ajout_libelles_nivgeo(TABLE, NIVGEO_IN, NIVGEO_OUT, LIBGEO_OUT, COG_NIVGEO) 8 | } 9 | \arguments{ 10 | \item{TABLE}{Table en entrée avec un champ contenant un code d'unité géographique.} 11 | 12 | \item{NIVGEO_IN}{Nom du champ de la table en entrée contenant le code d'unité géographique (en format court, liste : cf. details ci-dessous).} 13 | 14 | \item{NIVGEO_OUT}{Nom du code d'unité géographique (en format court, liste : cf. details ci-dessous).} 15 | 16 | \item{LIBGEO_OUT}{Nom du champ du libellé d'unité géographique à ajouter dans la table en sortie (par défaut : préfixe "LIB_").} 17 | 18 | \item{COG_NIVGEO}{Millésime du Code Officiel Géographique du code d'unité géographique en entrée (liste : cf. details ci-dessous).} 19 | } 20 | \value{ 21 | Renvoie une table avec un champ supplémentaire contenant le libellé de l'unité géographique. 22 | } 23 | \description{ 24 | Ajouter le libellé d'une unité géographique à partir du champ contenant le code en format court. 25 | } 26 | \details{ 27 | Les millésimes du COG disponibles sont les suivants : 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019. \cr 28 | 29 | Les niveaux supra-communaux disponibles sont les suivants : 30 | \itemize{ 31 | \item{Département ('DEP')} 32 | \item{Région administrative ('REG')} 33 | \item{Établissement public de coopération intercommunale ('EPCI')} 34 | \item{Arrondissement ('ARR')} 35 | \item{Canton-ou-ville ('CV')} 36 | \item{Zone d'emploi ('ZE2010')} 37 | \item{Unité Urbaine ('UU2010')} 38 | \item{Aire Urbaine ('AU2010')} 39 | \item{Zonage en Aires Urbaines ('CATAEU2010')} 40 | \item{Bassin de vie ('BV2012')} 41 | \item{Type de densité selon la grille de densité communale ('TYPEDENS')}} 42 | } 43 | \examples{ 44 | \dontrun{ 45 | # Ajout du champ 'LIB_DEP' contenant le libellé en clair du code DEP 46 | indics_migres_DEP <- 47 | ajout_libelles_nivgeo(TABLE = indics_migres_DEP, 48 | NIVGEO_IN ="DEP", 49 | COG_NIVGEO = 2019) 50 | 51 | # Ajout du champ 'LIB_REG_ANTE' contenant le libellé en clair des codes EPCI 52 | flux_migres_EPCI <- 53 | ajout_libelles_nivgeo(TABLE = flux_migres_EPCI, 54 | NIVGEO_IN ="EPCI_ANTE", 55 | NIVGEO_OUT ="EPCI", 56 | LIBGEO_OUT = "LIB_EPCI_ANTE", 57 | COG_NIVGEO = 2019) \%>\% 58 | ajout_libelles_nivgeo(TABLE = ., 59 | NIVGEO_IN ="EPCI_ACTU", 60 | NIVGEO_OUT ="EPCI", 61 | LIBGEO = "LIB_EPCI_ACTU", 62 | COG_NIVGEO = 2019) 63 | } 64 | 65 | } 66 | -------------------------------------------------------------------------------- /man/calcul_indics_migres.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/calcul_indics_migres.R 3 | \name{calcul_indics_migres} 4 | \alias{calcul_indics_migres} 5 | \title{Calculer les indicateurs relatifs aux migrations résidentielles pour chaque zone.} 6 | \usage{ 7 | calcul_indics_migres(TABLE, NIVGEO_ACTU, NIVGEO_ANTE, NIVGEO, VAR_NB, 8 | VAR_VENTIL = NULL) 9 | } 10 | \arguments{ 11 | \item{TABLE}{Table en entrée contenant a minima un champ de résidence actuelle et un champ de résidence antérieure sur le même niveau géographique, ainsi qu'un champ comptablisant le nombre d'individus correspondant.} 12 | 13 | \item{NIVGEO_ACTU}{Nom du champ de la table en entrée contenant le niveau géographique de résidence actuelle.} 14 | 15 | \item{NIVGEO_ANTE}{Nom du champ de la table en entrée contenant le niveau géographique de résidence antérieure.} 16 | 17 | \item{NIVGEO}{Nom du champ de la table en sortie contenant le niveau géographique.} 18 | 19 | \item{VAR_NB}{Nom du champ de la table en entrée contenant le nombre d'individus correspondant à la migration résidence antérieure / résidence actuelle.} 20 | 21 | \item{VAR_VENTIL}{Nom du champ de la variable de ventilation de la population, de type tranche d'âge, groupe socio-professionnel, etc... (facultatif).} 22 | } 23 | \value{ 24 | Renvoie une table contenant un champ contenant l'identifiant des territoires ainsi que les indicateurs relatifs aux migrations résidentielles. 25 | } 26 | \description{ 27 | A partir d'une table en entrée contenant un champ de résidence actuelle et un champ de résidence antérieure sur le même niveau géographique, une table en sortie est créée contenant les indicateurs relatifs aux migrations résidentielles (liste des indicateurs : cf. details ci-dessous). 28 | } 29 | \details{ 30 | Les indicateurs générés dans la table de sortie sont les suivants (cf. vignette pour les définitions exactes et les formules de calcul) : \cr 31 | \itemize{ 32 | \item{Population présente ('nb_ind_PRES')} 33 | \item{Population autochtone ('nb_ind_AUTO')} 34 | \item{Population stable ('nb_ind_ISO')} 35 | \item{Population entrante ('nb_ind_ENTR')} 36 | \item{Population sortante ('nb_ind_SORT')} 37 | \item{Solde migratoire ('SM')} 38 | \item{Taux de migration nette interne ('TM')} 39 | \item{Taux de rotation nette interne ('TR')} 40 | \item{Part d'entrants ('PE')} 41 | \item{Part de sortants ('PS')}} 42 | } 43 | \examples{ 44 | \dontrun{ 45 | # Calcul du nombre de migrations entre résidence actuelle et résidence antérieure au niveau départemental 46 | indics_migres_REG <- 47 | calcul_indics_migres(TABLE =flux_migres_DEP, 48 | NIVGEO_ANTE ="DEP_ANTE", 49 | NIVGEO_ACTU ="DEP_ACTU", 50 | NIVGEO ="DEP", 51 | VAR_NB = "nb_ind") 52 | 53 | # Calcul du nombre de flux entre résidence actuelle et résidence antérieure au niveau régional, et ventilés par groupe socio-professionel 54 | indics_migres_REG_CS1 <- 55 | calcul_indics_migres(TABLE =flux_migres_REG_CS1, 56 | NIVGEO_ANTE ="DEP_ANTE", 57 | NIVGEO_ACTU ="DEP_ACTU", 58 | NIVGEO ="DEP", 59 | VAR_NB = "nb_ind") 60 | } 61 | 62 | } 63 | -------------------------------------------------------------------------------- /man/creation_carto_supracomm.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/creation_carto_supracomm.R 3 | \name{creation_carto_supracomm} 4 | \alias{creation_carto_supracomm} 5 | \title{Générer la cartographie d'un maillage supracommunal} 6 | \usage{ 7 | creation_carto_supracomm(CARTO_COMM, CODE_COMMUNE, COG_IN, COG_NIVGEO, 8 | NIVGEO, FORMAT = "poly", SG = 1) 9 | } 10 | \arguments{ 11 | \item{CARTO_COMM}{Cartographie en entrée des communes françaises, format sf dataframe.} 12 | 13 | \item{CODE_COMMUNE}{Nom du champ contenant l'identifiant communal (de type caractère) de la table en entrée.} 14 | 15 | \item{COG_IN}{Millésime du Code Officiel Géographique des communes en entrée.} 16 | 17 | \item{COG_NIVGEO}{Millésime du Code Officiel Géographique du maillage supra-communal en sortie.} 18 | 19 | \item{NIVGEO}{Nom du code d'unité géographique à générer en sortie (en format court, liste : cf. details ci-dessous).} 20 | 21 | \item{FORMAT}{Format de la cartographie générée : polygones ("poly") ou centroides ("ctr").} 22 | 23 | \item{SG}{Niveau de généralisation de la géometrie générée : pourcentage des sommets de la géométrie initiale conservés, 1 par défaut.} 24 | } 25 | \value{ 26 | Renvoie la cartographie du maillage supracommunal sous forme d'objet sf dataframe. 27 | } 28 | \description{ 29 | A partir d'un fichier cartographique des communes françaises (issu du produit AdminExpress (http://www.professionnels.ign.fr/adminexpress) de l'IGN par exemple), générer la cartographie correspondant à un maillage supracommunal (département, aire urbaine, etc...) sous forme de polygones ou de centroides. 30 | } 31 | \details{ 32 | La conversion entre les différents millésimes du COG est gérée grâce à la fonction 'changement_COG_typo' du package 'COGugaison' ; la méthode de fusion par défaut est 'methode_max_pop' (cf. aide "COGugaison"). 33 | 34 | Les millésimes du COG disponibles sont les suivants : 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019. \cr 35 | 36 | Les niveaux supra-communaux disponibles sont les suivants : 37 | \itemize{ 38 | \item{Département ('DEP')} 39 | \item{Région administrative ('REG')} 40 | \item{Établissement public de coopération intercommunale ('EPCI')} 41 | \item{Arrondissement ('ARR')} 42 | \item{Canton-ou-ville ('CV')} 43 | \item{Zone d'emploi ('ZE2010')} 44 | \item{Unité Urbaine ('UU2010')} 45 | \item{Aire Urbaine ('AU2010')} 46 | \item{Zonage en Aires Urbaines ('CATAEU2010')} 47 | \item{Bassin de vie ('BV2012')} 48 | \item{Type de densité selon la grille de densité communale ('TYPEDENS')}} 49 | } 50 | \examples{ 51 | \dontrun{ 52 | # Création de la cartographie des anciennes régions (millésime 2015) en format polygones avec géométrie généralisée 53 | geo_REG_poly <- 54 | creation_carto_supracomm(CARTO_COMM = COMMG_COG2016_METDOM, 55 | CODE_COMMUNE = "DEPCOM", 56 | COG_IN = 2016, 57 | COG_NIVGEO = 2015, 58 | NIVGEO = "REG", 59 | FORMAT = "poly", 60 | SG = 0.05) 61 | 62 | # Création de la cartographie des EPCI (millésime 2018) en format centroïdes 63 | geo_EPCI_ctr <- 64 | creation_carto_supracomm(CARTO_COMM = COMMG_COG2016_METDOM, 65 | CODE_COMMUNE = "DEPCOM", 66 | COG_IN = 2016, 67 | COG_NIVGEO = 2018, 68 | NIVGEO = "EPCI", 69 | FORMAT ="ctr", 70 | SG = 1) 71 | } 72 | 73 | } 74 | -------------------------------------------------------------------------------- /man/ajout_libelles_varventil_insee.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/ajout_libelles_varventil_insee.R 3 | \name{ajout_libelles_varventil_insee} 4 | \alias{ajout_libelles_varventil_insee} 5 | \title{Ajouter le libellé d'une modalité de variable de ventilation} 6 | \usage{ 7 | ajout_libelles_varventil_insee(TABLE, VAR, MILLESIME_RP) 8 | } 9 | \arguments{ 10 | \item{TABLE}{Table en entrée avec un champ contenant les modalités d'une variable de ventilation en format court (liste : cf. details ci-dessous).} 11 | 12 | \item{VAR}{Nom du champ contenant les modalités d'une variable de ventilation en format court (liste : cf. details ci-dessous).} 13 | 14 | \item{MILLESIME_RP}{Millésime du recensement RP de l'Insee de la variable de ventilation en entrée (liste : cf. details ci-dessous).} 15 | } 16 | \value{ 17 | Renvoie une table avec un champ supplémentaire contenant le libellé de la modalité. 18 | } 19 | \description{ 20 | Ajouter le libellé d'une modalité de variable de ventilation (issue d'un fichier du RP Insee) à partir du champ contenant le code en format court. 21 | } 22 | \details{ 23 | Les millésimes du RP disponibles sont les suivants : 2008, 2013, 2014, 2015, 2016. \cr 24 | 25 | Les variables de ventilation disponbibles sont issues de la documentation des fichiers détail 'Migrations Résidentielles' et sont les suivants : 26 | \itemize{ 27 | \item{Période regroupée d'achèvement de la construction de la maison ou de l'immeuble ('ACHLR')} 28 | \item{Âge regroupé de la personne de référence du ménage en 8 classes d'âge ('AGEMEN8')} 29 | \item{Âge quinquennal en années révolues ('AGEREVQ')} 30 | \item{Ancienneté d'emménagement ('ANEMC')} 31 | \item{Catégorie de population condensée ('CATPC')} 32 | \item{Catégorie socioprofessionnelle en 8 postes ('CS1')} 33 | \item{Catégorie socioprofessionnelle de la personne de référence du ménage en 8 postes ('CSM')} 34 | \item{Diplôme le plus élevé ('DIPL_15')} 35 | \item{Département de naissance (si né en France) ('DNAI')} 36 | \item{Condition d'emploi ('EMPL')} 37 | \item{Indicateur du lieu de naissance ('INAI')} 38 | \item{Indicateur de nationalité condensé (Français/Étranger) ('INATC')} 39 | \item{Indicateur de résidence antérieure au 1er janvier de l'année précédente ('IRAN')} 40 | \item{Indicateur urbain du lieu de résidence antérieure au 1er janvier de l'année précédente ('IRANUU')} 41 | \item{Lien à la personne de référence du ménage ('LPRM')} 42 | \item{Indicateur Métropole ou DOM du lieu de résidence ('METRODOM')} 43 | \item{Mode de cohabitation ('MOCO')} 44 | \item{Activité économique en 17 postes (NA - A17) ('NA17')} 45 | \item{Activité économique regroupée en 5 postes ('NA5')} 46 | \item{Nombre de personnes du ménage (regroupé) ('NPERR')} 47 | \item{Ancienneté de recherche d'emploi ('RECH')} 48 | \item{Sexe ('SEXE')} 49 | \item{Statut d'occupation détaillé du logement ('STOCD')} 50 | \item{Type d'activité ('TACT')} 51 | \item{Type d'activité de la personne de référence du ménage ('TACTM')} 52 | \item{Mode de transport principal le plus souvent utilisé pour aller travailler ('TRANS')} 53 | \item{Type de construction ('TYPC')} 54 | \item{Type de logement ('TYPL')} 55 | \item{Type de ménage regroupé (en 9 postes) ('TYPMR')}} 56 | } 57 | \examples{ 58 | \dontrun{ 59 | # Ajout du champ 'LIB_CS1' contenant le libellé en clair du code CS1 (aka "groupe socioprofessionnel") 60 | indics_mig_DEP_CS1 <- 61 | ajout_libelles_varventil_insee(TABLE = indics_mig_DEP_CS1, 62 | VAR ="CS1", 63 | MILLESIME_RP = 2016) 64 | 65 | } 66 | 67 | } 68 | -------------------------------------------------------------------------------- /man/calcul_indics_renouv.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/calcul_indics_renouv.R 3 | \name{calcul_indics_renouv} 4 | \alias{calcul_indics_renouv} 5 | \title{Calculer les indicateurs de catégorisation et de renouvellement de la population par les migrations} 6 | \usage{ 7 | calcul_indics_renouv(TABLE, NIVGEO, NB_ENTR, NB_SORT, NB_AUTO, NB_PRES, 8 | VAR_VENTIL) 9 | } 10 | \arguments{ 11 | \item{TABLE}{Table en entrée contenant les indicateurs relatifs aux migrations résidentielles par territoire (population entrante, sortante, autochtone et présente).} 12 | 13 | \item{NIVGEO}{Nom du champ de la table en entrée contenant le niveau géographique.} 14 | 15 | \item{NB_ENTR}{Nom du champ de la table en entrée contenant le nombre d'individus étant entré dans le territoire.} 16 | 17 | \item{NB_SORT}{Nom du champ de la table en entrée contenant le nombre d'individus étant sorti du territoire.} 18 | 19 | \item{NB_AUTO}{Nom du champ de la table en entrée contenant le nombre d'individus étant présente dans le territoire en N-x.} 20 | 21 | \item{NB_PRES}{Nom du champ de la table en entrée contenant le nombre d'individus étant présente dans le territoire en N.} 22 | 23 | \item{VAR_VENTIL}{Nom du champ de la variable de ventilation de la population, de type tranche d'âge, groupe socio-professionnel, etc... (facultatif).} 24 | } 25 | \value{ 26 | Renvoie une table contenant l'identifiant des territoires ainsi que les indicateurs par type de migrations (immigration, émigration, migrations) par modalité de la variable de ventilation (groupe socio-professionnel par exemple) 27 | } 28 | \description{ 29 | A partir d'une table en entrée contenant les indicateurs relatifs aux migrations résidentielles par territoire (population entrante, sortante, autochtone et présente). 30 | } 31 | \details{ 32 | Les indicateurs générés dans le champ 'type_indice' de la table de sortie sont les suivants (cf. vignette pour les définitions exactes et les formules de calcul) : 33 | \itemize{ 34 | \item{Indice de catégorisation par l'immigration ('ICI')} 35 | \item{Indice de catégorisation par l'émigration ('ICE')} 36 | \item{Indice de catégorisation par les migrations ('ICM')} 37 | \item{Indice de renouvellement par l'immigration ('IRI')} 38 | \item{Indice de renouvellement par l'émigration ('IRE')} 39 | \item{Indice de renouvellement par les migrations ('IRM')} 40 | \item{Part de la catégorie dans la population présente ('pct_ind_PRES')} 41 | \item{Evolution de la part de la catégorie au sein de la population par le jeu des migrations internes ('evol_pct_AUTO_PRES')}} 42 | 43 | Chacun des 3 indices de catégorisation (ICI, ICE, ICM) est calculé pour chacune des modalités de la variable de ventilation indiquées dans le champ qui porte son nom. 44 | Les 3 indices de renouvellement (IRI, IRE, IRM) ne sont au contraire indiqués qu'une seule fois. 45 | La valeur de l'indice correspondant est indiquée dans le champ 'valeur'. 46 | L'évolution de la part de la catégorie au sein de la population par le jeu des migrations internes (evol_pct_AUTO_PRES) est égale à la différence entre la part de cette catégorie dans la population présente et la part de cette même catégorie dans la population autochtone. 47 | } 48 | \examples{ 49 | \dontrun{ 50 | # Calcul les indicateurs de catégorisation et de renouvellement de la population par les migrations selon le groupe socio-professionnel au niveau régional 51 | indics_mig_EPCI_CS1_RENOUV <- 52 | calcul_indics_renouv(TABLE = indics_mig_EPCI_CS1, 53 | NIVGEO = "EPCI", 54 | NB_ENTR = "nb_ind_ENTR", 55 | NB_SORT = "nb_ind_SORT", 56 | NB_AUTO = "nb_ind_AUTO", 57 | NB_PRES = "nb_ind_PRES", 58 | VAR_VENTIL ="CS1") 59 | 60 | } 61 | 62 | 63 | } 64 | -------------------------------------------------------------------------------- /docs/pkgdown.js: -------------------------------------------------------------------------------- 1 | /* http://gregfranko.com/blog/jquery-best-practices/ */ 2 | (function($) { 3 | $(function() { 4 | 5 | $("#sidebar") 6 | .stick_in_parent({offset_top: 40}) 7 | .on('sticky_kit:bottom', function(e) { 8 | $(this).parent().css('position', 'static'); 9 | }) 10 | .on('sticky_kit:unbottom', function(e) { 11 | $(this).parent().css('position', 'relative'); 12 | }); 13 | 14 | $('body').scrollspy({ 15 | target: '#sidebar', 16 | offset: 60 17 | }); 18 | 19 | $('[data-toggle="tooltip"]').tooltip(); 20 | 21 | var cur_path = paths(location.pathname); 22 | var links = $("#navbar ul li a"); 23 | var max_length = -1; 24 | var pos = -1; 25 | for (var i = 0; i < links.length; i++) { 26 | if (links[i].getAttribute("href") === "#") 27 | continue; 28 | var path = paths(links[i].pathname); 29 | 30 | var length = prefix_length(cur_path, path); 31 | if (length > max_length) { 32 | max_length = length; 33 | pos = i; 34 | } 35 | } 36 | 37 | // Add class to parent
  • , and enclosing
  • if in dropdown 38 | if (pos >= 0) { 39 | var menu_anchor = $(links[pos]); 40 | menu_anchor.parent().addClass("active"); 41 | menu_anchor.closest("li.dropdown").addClass("active"); 42 | } 43 | }); 44 | 45 | function paths(pathname) { 46 | var pieces = pathname.split("/"); 47 | pieces.shift(); // always starts with / 48 | 49 | var end = pieces[pieces.length - 1]; 50 | if (end === "index.html" || end === "") 51 | pieces.pop(); 52 | return(pieces); 53 | } 54 | 55 | function prefix_length(needle, haystack) { 56 | if (needle.length > haystack.length) 57 | return(0); 58 | 59 | // Special case for length-0 haystack, since for loop won't run 60 | if (haystack.length === 0) { 61 | return(needle.length === 0 ? 1 : 0); 62 | } 63 | 64 | for (var i = 0; i < haystack.length; i++) { 65 | if (needle[i] != haystack[i]) 66 | return(i); 67 | } 68 | 69 | return(haystack.length); 70 | } 71 | 72 | /* Clipboard --------------------------*/ 73 | 74 | function changeTooltipMessage(element, msg) { 75 | var tooltipOriginalTitle=element.getAttribute('data-original-title'); 76 | element.setAttribute('data-original-title', msg); 77 | $(element).tooltip('show'); 78 | element.setAttribute('data-original-title', tooltipOriginalTitle); 79 | } 80 | 81 | if(Clipboard.isSupported()) { 82 | $(document).ready(function() { 83 | var copyButton = ""; 84 | 85 | $(".examples, div.sourceCode").addClass("hasCopyButton"); 86 | 87 | // Insert copy buttons: 88 | $(copyButton).prependTo(".hasCopyButton"); 89 | 90 | // Initialize tooltips: 91 | $('.btn-copy-ex').tooltip({container: 'body'}); 92 | 93 | // Initialize clipboard: 94 | var clipboardBtnCopies = new Clipboard('[data-clipboard-copy]', { 95 | text: function(trigger) { 96 | return trigger.parentNode.textContent; 97 | } 98 | }); 99 | 100 | clipboardBtnCopies.on('success', function(e) { 101 | changeTooltipMessage(e.trigger, 'Copied!'); 102 | e.clearSelection(); 103 | }); 104 | 105 | clipboardBtnCopies.on('error', function() { 106 | changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); 107 | }); 108 | }); 109 | } 110 | })(window.jQuery || window.$) 111 | -------------------------------------------------------------------------------- /man/calcul_indics_histodemo.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/calcul_indics_histodemo.R 3 | \name{calcul_indics_histodemo} 4 | \alias{calcul_indics_histodemo} 5 | \title{Calculer les indicateurs d'évolution démographique depuis 1968} 6 | \usage{ 7 | calcul_indics_histodemo(TABLE, anneeRP = 2016, NIVGEO, COG_NIVGEO) 8 | } 9 | \arguments{ 10 | \item{TABLE}{Table en entrée générée par la fonction 'chargement_bd_histodemo'.} 11 | 12 | \item{anneeRP}{Millésime du Recensement de la Population de l'Insee correspondant à la table (2016 par défaut).} 13 | 14 | \item{NIVGEO}{Nom du niveau géographique supra-communal à ajouter (en format court, liste : cf. details ci-dessous).} 15 | 16 | \item{COG_NIVGEO}{Millésime du Code Officiel Géographique du code supra-communal en sortie (liste : cf. details ci-dessous).} 17 | } 18 | \value{ 19 | Renvoie une table contenant les indicateurs d'évolution démographique par territoire et par période intercensitaire. 20 | } 21 | \description{ 22 | A partir de la base de données "séries historiques", calculer les indicateurs d'évolution démographique (évolution de la population, solde naturel, solde migratoire apparent...) par période intercensitaire et à la maille communale ou supra-communale souhaitée. 23 | } 24 | \details{ 25 | Les champs de la table en sortie sont les suivants : 26 | \itemize{ 27 | \item{'periode' : période intercensitaire concernée, format "AAAA_AAAA"} 28 | \item{'periode_milieu' : milieu de la période intercensitaire concernée, format numérique} 29 | \item{'periode_nb_annees' : nombre d'années de la période intercensitaire concernée} 30 | \item{'POPULATION_debut' : Population en début de période} 31 | \item{'POPULATION_fin' : Population en fin de période} 32 | \item{'DECES' : Nombre de décès au cours de la période} 33 | \item{'NAISSANCES' : Nombre de naissances au cours de la période} 34 | \item{'EVOL_DEMO_TOT' : Evolution démographique au cours de la période} 35 | \item{'EVOL_DEMO_SN' : Evolution démographique due au solde naturel au cours de la période} 36 | \item{'EVOL_DEMO_SMA' : Evolution démographique due au solde migratoire apparent au cours de la période} 37 | \item{'TX_EVOL_DEMO_AN_TOT' : Taux annuel d'évolution démographique au cours de la période} 38 | \item{'TX_EVOL_DEMO_AN_SN' : Taux annuel d'évolution démographique due au solde naturel au cours de la période} 39 | \item{'TX_EVOL_DEMO_AN_SMA' : Taux annuel d'évolution démographique due au solde migratoire apparent au cours de la période}} 40 | 41 | 42 | Les millésimes du COG disponibles sont les suivants : 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019. \cr 43 | 44 | Pour convertir un code commune d'un COG plus ancien, il est conseillé d'effectuer l'opération grâce au package 'COGugaison'. \cr 45 | 46 | Les niveaux supra-communaux disponibles sont les suivants : 47 | \itemize{ 48 | \item{Commune ('COMM')} 49 | \item{Département ('DEP')} 50 | \item{Région administrative ('REG')} 51 | \item{Établissement public de coopération intercommunale ('EPCI')} 52 | \item{Nature d'Établissement public de coopération intercommunale ('NATURE_EPCI')} 53 | \item{Arrondissement ('ARR')} 54 | \item{Canton-ou-ville ('CV')} 55 | \item{Zone d'emploi ('ZE2010')} 56 | \item{Unité Urbaine ('UU2010')} 57 | \item{Tranche d'Unité Urbaine ('TUU2015')} 58 | \item{Tranche détaillée d'Unité Urbaine ('TDUU2015')} 59 | \item{Aire Urbaine ('AU2010')} 60 | \item{Tranche d'aire urbaine ('TAU2015')} 61 | \item{Zonage en Aires Urbaines ('CATAEU2010')} 62 | \item{Bassin de vie ('BV2012')} 63 | \item{Type de densité selon la grille de densité communale ('TYPEDENS')}} 64 | } 65 | \examples{ 66 | \dontrun{ 67 | # Calculer les indicateurs d'évolution démographique par période entre 1968 et 2016, à la maille département 68 | DEP_histodemo_19682016 <- calcul_indics_histodemo(TABLE = COMM_HISTODEMO_2016, anneeRP = 2016, NIVGEO = "DEP",COG_NIVGEO = 2019) 69 | } 70 | 71 | } 72 | \references{ 73 | \itemize{ 74 | \item{\href{https://antuki.github.io/COGugaison/articles/COGugaison.html}{Package 'COGugaison' pour gérer les changements de COG}} 75 | \item{\href{https://www.insee.fr/fr/information/2666684#titre-bloc-11}{Historique des géographies communales (Insee)}} 76 | \item{\href{https://www.insee.fr/fr/information/2028028}{Tables d'appartenance des communes aux différents niveaux géographiques (Insee)}}} 77 | } 78 | -------------------------------------------------------------------------------- /R/ajout_libelles_varventil_insee.R: -------------------------------------------------------------------------------- 1 | #' @name ajout_libelles_varventil_insee 2 | #' 3 | #' @title Ajouter le libellé d'une modalité de variable de ventilation 4 | #' 5 | #' @description Ajouter le libellé d'une modalité de variable de ventilation (issue d'un fichier du RP Insee) à partir du champ contenant le code en format court. 6 | #' 7 | #' @param TABLE Table en entrée avec un champ contenant les modalités d'une variable de ventilation en format court (liste : cf. details ci-dessous). 8 | #' @param VAR Nom du champ contenant les modalités d'une variable de ventilation en format court (liste : cf. details ci-dessous). 9 | #' @param MILLESIME_RP Millésime du recensement RP de l'Insee de la variable de ventilation en entrée (liste : cf. details ci-dessous). 10 | #' 11 | #' @return Renvoie une table avec un champ supplémentaire contenant le libellé de la modalité. 12 | #' 13 | #' @importFrom dplyr tribble distinct pull mutate select left_join case_when group_by summarise ungroup rename mutate_all bind_rows everything 14 | #' @importFrom rlang sym 15 | #' 16 | #' @examples 17 | #' \dontrun{ 18 | #' # Ajout du champ 'LIB_CS1' contenant le libellé en clair du code CS1 (aka "groupe socioprofessionnel") 19 | #' indics_mig_DEP_CS1 <- 20 | #' ajout_libelles_varventil_insee(TABLE = indics_mig_DEP_CS1, 21 | #' VAR ="CS1", 22 | #' MILLESIME_RP = 2016) 23 | #' 24 | #'} 25 | #' 26 | #' @details 27 | #' Les millésimes du RP disponibles sont les suivants : 2008, 2013, 2014, 2015, 2016. \cr 28 | #' 29 | #' Les variables de ventilation disponbibles sont issues de la documentation des fichiers détail 'Migrations Résidentielles' et sont les suivants : 30 | #' \itemize{ 31 | #' \item{Période regroupée d'achèvement de la construction de la maison ou de l'immeuble ('ACHLR')} 32 | #' \item{Âge regroupé de la personne de référence du ménage en 8 classes d'âge ('AGEMEN8')} 33 | #' \item{Âge quinquennal en années révolues ('AGEREVQ')} 34 | #' \item{Ancienneté d'emménagement ('ANEMC')} 35 | #' \item{Catégorie de population condensée ('CATPC')} 36 | #' \item{Catégorie socioprofessionnelle en 8 postes ('CS1')} 37 | #' \item{Catégorie socioprofessionnelle de la personne de référence du ménage en 8 postes ('CSM')} 38 | #' \item{Diplôme le plus élevé ('DIPL_15')} 39 | #' \item{Département de naissance (si né en France) ('DNAI')} 40 | #' \item{Condition d'emploi ('EMPL')} 41 | #' \item{Indicateur du lieu de naissance ('INAI')} 42 | #' \item{Indicateur de nationalité condensé (Français/Étranger) ('INATC')} 43 | #' \item{Indicateur de résidence antérieure au 1er janvier de l'année précédente ('IRAN')} 44 | #' \item{Indicateur urbain du lieu de résidence antérieure au 1er janvier de l'année précédente ('IRANUU')} 45 | #' \item{Lien à la personne de référence du ménage ('LPRM')} 46 | #' \item{Indicateur Métropole ou DOM du lieu de résidence ('METRODOM')} 47 | #' \item{Mode de cohabitation ('MOCO')} 48 | #' \item{Activité économique en 17 postes (NA - A17) ('NA17')} 49 | #' \item{Activité économique regroupée en 5 postes ('NA5')} 50 | #' \item{Nombre de personnes du ménage (regroupé) ('NPERR')} 51 | #' \item{Ancienneté de recherche d'emploi ('RECH')} 52 | #' \item{Sexe ('SEXE')} 53 | #' \item{Statut d'occupation détaillé du logement ('STOCD')} 54 | #' \item{Type d'activité ('TACT')} 55 | #' \item{Type d'activité de la personne de référence du ménage ('TACTM')} 56 | #' \item{Mode de transport principal le plus souvent utilisé pour aller travailler ('TRANS')} 57 | #' \item{Type de construction ('TYPC')} 58 | #' \item{Type de logement ('TYPL')} 59 | #' \item{Type de ménage regroupé (en 9 postes) ('TYPMR')}} 60 | #' 61 | #' @export 62 | #' 63 | 64 | 65 | ajout_libelles_varventil_insee <- function(TABLE, VAR, MILLESIME_RP) { 66 | 67 | ref_var <- 68 | REF_VARS_INSEE_FD_MIGCOM %>% 69 | filter(millesime_FD == !!MILLESIME_RP) %>% 70 | filter(CODVAR %in% !!VAR) %>% 71 | mutate_all(as.character) %>% 72 | select(CODMOD, LIBMOD) 73 | 74 | # affectation du libellé à la table 75 | TABLE <- TABLE %>% rename(VAR = VAR) %>% 76 | left_join(ref_var , by = c('VAR' = 'CODMOD') ) %>% 77 | #ordre variables dans dataframe 78 | dplyr::select(VAR, LIBMOD, everything()) 79 | 80 | # renommer variables NIVGEO et LIBGEO 81 | TABLE <- TABLE %>% rename(!!VAR := VAR, !!paste0(VAR, "_LIB") := LIBMOD ) 82 | 83 | } 84 | 85 | 86 | -------------------------------------------------------------------------------- /man/ajout_nivgeo_supracomm.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/ajout_nivgeo_supracomm.R 3 | \name{ajout_nivgeo_supracomm} 4 | \alias{ajout_nivgeo_supracomm} 5 | \title{Ajouter un champ contenant un niveau géographique supra-communal} 6 | \usage{ 7 | ajout_nivgeo_supracomm(TABLE, CODE_COMMUNE, SUFFIXE = "", COG_IN, 8 | COG_NIVGEO, NIVGEO) 9 | } 10 | \arguments{ 11 | \item{TABLE}{Table en entrée disposant a minima d'un champ de codes commune Insee.} 12 | 13 | \item{CODE_COMMUNE}{Nom du champ de la table en entrée contenant le code commune Insee. Il peut contenir des codes arrondissements pour Paris, Lyon et Marseille (75101, 75102, etc...) ou non ('75056')} 14 | 15 | \item{SUFFIXE}{Terme à ajouter en suffixe au nom du champ de niveau supra-communal ajouté à la table (facultatif).} 16 | 17 | \item{COG_IN}{Millésime du Code Officiel Géographique du code commune en entrée (liste : cf. details ci-dessous). Le millésime du COG est indiqué dans les métadonnées des fichiers Insee, dans le fichier du RP d'année N il est généralement égal à N-2.} 18 | 19 | \item{COG_NIVGEO}{Millésime du Code Officiel Géographique du code supra-communal en sortie (liste : cf. details ci-dessous).} 20 | 21 | \item{NIVGEO}{Nom du niveau géographique supra-communal à ajouter (en format court, liste : cf. details ci-dessous). Peut être un vecteur contenant les noms de plusieurs niveaux.} 22 | } 23 | \value{ 24 | Renvoie une table avec un champ supplémentaire contenant le niveau géographique supra-communal. 25 | } 26 | \description{ 27 | Dans une table contenant un code commune Insee (avec ou sans arrondissements pour Paris, Lyon et Marseille), accoler à cette table un nouveau champ contenant le niveau supra-communal correspondant à cette commune. 28 | } 29 | \details{ 30 | Les millésimes du COG disponibles sont les suivants : 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019. \cr 31 | 32 | Pour convertir un code commune d'un COG plus ancien, il est conseillé d'effectuer l'opération grâce au package 'COGugaison'. \cr 33 | 34 | Les niveaux supra-communaux disponibles sont les suivants : 35 | \itemize{ 36 | \item{Département ('DEP')} 37 | \item{Région administrative ('REG')} 38 | \item{Établissement public de coopération intercommunale ('EPCI')} 39 | \item{Nature d'Établissement public de coopération intercommunale ('NATURE_EPCI')} 40 | \item{Arrondissement ('ARR')} 41 | \item{Canton-ou-ville ('CV')} 42 | \item{Zone d'emploi ('ZE2010')} 43 | \item{Unité Urbaine ('UU2010')} 44 | \item{Tranche d'Unité Urbaine ('TUU2015')} 45 | \item{Tranche détaillée d'Unité Urbaine ('TDUU2015')} 46 | \item{Aire Urbaine ('AU2010')} 47 | \item{Tranche d'aire urbaine ('TAU2015')} 48 | \item{Zonage en Aires Urbaines ('CATAEU2010')} 49 | \item{Bassin de vie ('BV2012')} 50 | \item{Type de densité selon la grille de densité communale ('TYPEDENS')}} 51 | } 52 | \examples{ 53 | \dontrun{ 54 | # Ajout du champ 'DEP' indiquant le niveau géographique "département" à une table ayant une information communale 55 | COM_2012 <- 56 | ajout_nivgeo_supracomm(TABLE = COM_2012 , 57 | CODE_COMMUNE = "CODGEO", 58 | NIVGEO = "DEP", 59 | COG_IN = 2010, 60 | COG_NIVGEO = 2019) 61 | 62 | # Ajout des niveaux géographiques "département", "région" et "type de densité" depuis les champs "commune de résidence actuelle" et "commune de résidence antérieure" 63 | FD_MIGCOM_2016 <- FD_MIGCOM_2016 64 | ajout_nivgeo_supracomm(TABLE = . , 65 | CODE_COMMUNE = "DCRAN", 66 | SUFFIXE = "ANTE", 67 | NIVGEO= c("DEP",'EPCI','TYPEDENS'), 68 | COG_IN = 2018, COG_NIVGEO = 2019) \%>\% 69 | ajout_nivgeo_supracomm(TABLE = . , 70 | CODE_COMMUNE = "COMMUNE", 71 | SUFFIXE = "ACTU", 72 | NIVGEO= c("DEP",'EPCI','TYPEDENS'), 73 | COG_IN = 2018, COG_NIVGEO = 2019) 74 | } 75 | 76 | } 77 | \references{ 78 | \itemize{ 79 | \item{\href{https://antuki.github.io/COGugaison/articles/COGugaison.html}{Package 'COGugaison' pour gérer les changements de COG}} 80 | \item{\href{https://www.insee.fr/fr/information/2666684#titre-bloc-11}{Historique des géographies communales (Insee)}} 81 | \item{\href{https://www.insee.fr/fr/information/2028028}{Tables d'appartenance des communes aux différents niveaux géographiques (Insee)}}} 82 | } 83 | -------------------------------------------------------------------------------- /R/chargement_bd_histodemo.R: -------------------------------------------------------------------------------- 1 | #' @name chargement_bd_histodemo 2 | #' 3 | #' @title Charger une base de données de séries historiques de population de l'Insee 4 | #' 5 | #' @description Télécharger la base de données "séries historiques" contenant les informations de démographique par période intercensitaire depuis 1968 depuis le site de l'Insee puis le monter en mémoire, ou uniquement la charger si le fichier xls est disponible en local. 6 | #' 7 | #' @param telechargement Vaut TRUE si le fichier doit être téléchargé depuis le site internet de l'Insee, FALSE si le fichier xls est disponible en local. 8 | #' @param dossier_dest_TL Dossier de destination où va être stockée l'archive zip et le fichier xls dézippé. S'il n'existe pas, il sera créé. Non renseigné si telechargement vaut FALSE. 9 | #' @param chemin_FD Lien vers le fichier xls (base-cc-serie-historique-AAAA.xls) en local. Non renseigné si telechargement vaut TRUE. 10 | #' 11 | #' @return Retourne une table communale contenant les informations de population/naissances/décès par période inter-censitaire depuis 1968. 12 | #' 13 | #' @importFrom dplyr %>% filter mutate 14 | #' @importFrom utils download.file unzip 15 | #' @importFrom readr read_csv 16 | #' @importFrom tibble tribble as_tibble 17 | #' @importFrom Insee2MonetDB Insee2MonetDB 18 | #' @importFrom stringr str_replace 19 | #' @importFrom readxl read_excel 20 | #' 21 | #' @examples 22 | #' \dontrun{ 23 | #' # Téléchargement du fichier "séries historiques" du dernier RP en date depuis le site internet de l'Insee dans le dossier "./data" 24 | #' COMM_HISTODEMO_2016 <- chargement_bd_histodemo(telechargement = TRUE, dossier_dest_TL = "./data") 25 | #' 26 | #' # Chargement du fichier xls "séries historiques" disponible en local 27 | #' COMM_HISTODEMO_2016 <- chargement_bd_histodemo(chemin_FD = "./data/base-cc-serie-historique-2016/base-cc-serie-historique-2016.xls") 28 | #' } 29 | #' 30 | #' @export 31 | #' 32 | 33 | chargement_bd_histodemo <- function(telechargement = FALSE, dossier_dest_TL, chemin_FD){ 34 | 35 | # pas d'historique en ligne sur le site de l'Insee 36 | # dernier millésime en date 37 | last_RP <- "2016" 38 | last_RP_ante <- "2011" 39 | last_RP_antepe <- "2006" 40 | 41 | if(telechargement %in% TRUE){ 42 | # création du dossier de destination 43 | if(missing(dossier_dest_TL) %in% FALSE){ 44 | dir.create(file.path(dossier_dest_TL), showWarnings = FALSE) 45 | } 46 | 47 | # dernier fichier "séries historiques" disponible 48 | parametres_DL <- 49 | tibble::tribble( 50 | ~millesime_RP, ~url_page, ~url_xls, ~nom_xls, 51 | last_RP,"https://www.insee.fr/fr/statistiques/4171585","https://www.insee.fr/fr/statistiques/fichier/4171585/base-cc-serie-histo-2016.zip", "base-cc-serie-historique-2016" 52 | ) 53 | 54 | # téléchargement du fichier zippé source 55 | download.file(parametres_DL$url_xls, 56 | destfile = paste0(dossier_dest_TL, "/",parametres_DL$nom_xls, ".zip"), 57 | method='auto') 58 | 59 | # dézipper fichiers 60 | unzip(paste0(dossier_dest_TL, "/",parametres_DL$nom_xls, ".zip"), 61 | exdir=paste0(dossier_dest_TL, "/", parametres_DL$nom_xls) ) 62 | 63 | 64 | # lecture et import du fichier zippé 65 | output <- readxl::read_excel(paste0(dossier_dest_TL, "/",parametres_DL$nom_xls,"/",parametres_DL$nom_xls,".xls"), sheet = "COM_2016",skip = 5) %>% 66 | rename(#paste0("POP_",last_RP) = sym(paste0( substr(last_RP,3,4), "_RP")), 67 | !!sym(paste0("POP_",last_RP)) := !!sym(paste0("P", substr(last_RP,3,4), "_POP")), 68 | !!sym(paste0("POP_",last_RP_ante)) := !!sym(paste0("P", substr(last_RP_ante,3,4), "_POP")), 69 | !!sym(paste0("POP_",last_RP_antepe)) := !!sym(paste0("P", substr(last_RP_antepe,3,4), "_POP")), 70 | POP_1999 = D99_POP, 71 | POP_1990 = D90_POP, 72 | POP_1982 = D82_POP, 73 | POP_1975 = D75_POP, 74 | POP_1968 = D68_POP 75 | ) %>% 76 | select(-c(REG, DEP, LIBGEO)) 77 | 78 | } else{ 79 | 80 | 81 | # lecture et import du fichier zippé 82 | 83 | output <- readxl::read_excel(paste0(chemin_FD), sheet = "COM_2016",skip = 5) %>% 84 | rename(#paste0("POP_",last_RP) = sym(paste0( substr(last_RP,3,4), "_RP")), 85 | !!sym(paste0("POP_",last_RP)) := !!sym(paste0("P", substr(last_RP,3,4), "_POP")), 86 | !!sym(paste0("POP_",last_RP_ante)) := !!sym(paste0("P", substr(last_RP_ante,3,4), "_POP")), 87 | !!sym(paste0("POP_",last_RP_antepe)) := !!sym(paste0("P", substr(last_RP_antepe,3,4), "_POP")), 88 | POP_1999 = D99_POP, 89 | POP_1990 = D90_POP, 90 | POP_1982 = D82_POP, 91 | POP_1975 = D75_POP, 92 | POP_1968 = D68_POP 93 | ) %>% 94 | select(-c(REG, DEP, LIBGEO)) 95 | 96 | } 97 | 98 | } 99 | -------------------------------------------------------------------------------- /R/calcul_flux_migres.R: -------------------------------------------------------------------------------- 1 | #' @name calcul_flux_migres 2 | #' 3 | #' @title Calculer le volume de migrations résidentielles entre zones 4 | #' 5 | #' @description A partir d'une table en entrée contenant un champ de résidence actuelle et un champ de résidence antérieure sur le même niveau géographique. 6 | #' 7 | #' @param TABLE Table en entrée contenant un champ de résidence actuelle et un champ de résidence antérieure sur le même niveau géographique (communes, départements, etc...). 8 | #' @param VAR_NB Nom du champ de la table en entrée contenant l'indicateur de pondération du tuple. 9 | #' @param VAR_VENTIL Nom du champ de la variable de ventilation de la population, de type tranche d'âge, groupe socio-professionnel, etc... (facultatif). 10 | #' @param MIG_NET_INTERNE Vaut TRUE si le calcul doit se faire uniquement sur les zones présentes à la fois en résidence actuelle et en résidence antérieure. 11 | #' @param NIVGEO_ANTE Nom du champ de la table en entrée contenant le niveau géographique de résidence antérieure. 12 | #' @param NIVGEO_ACTU Nom du champ de la table en entrée contenant le niveau géographique de résidence actuelle. 13 | #' 14 | #' @return Renvoie une table contenant un champ de résidence actuelle, un champ de résidence antérieure et un champ du nombre de migrations résidentielles entre chaque coupe de zones. 15 | #' 16 | #' @importFrom dplyr distinct pull mutate select left_join case_when group_by summarise ungroup 17 | #' @importFrom rlang sym 18 | #' 19 | #' @examples 20 | #' \dontrun{ 21 | #' # Calcul de la table de nombre de migrations entre résidence actuelle et résidence antérieure au niveau départemental 22 | #' flux_migres_DEP <- 23 | #' calcul_flux_migres(TABLE =FD_MIGCOM_2016 , 24 | #' VAR_NB = "IPONDI", 25 | #' MIG_NET_INTERNE=TRUE, 26 | #' NIVGEO_ANTE ="DEP_ANTE", 27 | #' NIVGEO_ACTU ="DEP_ACTU") 28 | #' # Calcul de la table de nombre de migrations entre résidence actuelle et résidence antérieure au niveau régional, et ventilés par groupe socio-professionel 29 | #' flux_migres_REG_CS1 <- 30 | #' calcul_flux_migres(TABLE =FD_MIGCOM_2016 , 31 | #' VAR_NB = "IPONDI", 32 | #' VAR_VENTIL = "CS1", 33 | #' MIG_NET_INTERNE=TRUE, 34 | #' NIVGEO_ANTE ="REG_ANTE", 35 | #' NIVGEO_ACTU ="REG_ACTU") 36 | #'} 37 | #' @export 38 | #' 39 | 40 | 41 | calcul_flux_migres <- function(TABLE,NIVGEO_ANTE, NIVGEO_ACTU,VAR_NB, VAR_VENTIL=NULL, MIG_NET_INTERNE=TRUE){ 42 | 43 | # controle pour matrice de migrations nettes internes : mêmes modalités dans NIVGEO_ANTE et NIVGEO_ACTU 44 | if(MIG_NET_INTERNE == TRUE) { 45 | TABLE_ok <- 46 | TABLE %>% 47 | filter(!!sym(NIVGEO_ANTE) %in% c(TABLE %>% distinct(!!sym(NIVGEO_ACTU)) %>% pull()) & 48 | !!sym(NIVGEO_ACTU) %in% c(TABLE %>% distinct(!!sym(NIVGEO_ANTE)) %>% pull() ) ) 49 | } 50 | 51 | # si variable de ventilation renseignée -> groupement par NIVGEO et VAR_VENTIL 52 | else { 53 | TABLE_ok <- TABLE 54 | } 55 | 56 | # cas 1 : pas de variable de ventilation renseignée -> groupement par NIVGEO uniquement 57 | if(missing(VAR_VENTIL)) { 58 | 59 | # création de la table de comptage de flux 60 | NIVGEO_flux_mig <- 61 | TABLE_ok %>% 62 | group_by(!!sym(NIVGEO_ACTU), 63 | !!sym(NIVGEO_ANTE)) %>% 64 | summarise(nb_ind = sum(!!sym(VAR_NB))) %>% 65 | # pourcentage en ligne sur total NIVGEO_ACTU 66 | mutate(pct_ind_ACTU = nb_ind / sum(nb_ind)) %>% 67 | # pourcentage en ligne sur total NIVGEO_ANTE 68 | ungroup() %>% 69 | group_by(!!sym(NIVGEO_ANTE)) %>% 70 | mutate(pct_ind_ANTE = nb_ind / sum(nb_ind)) %>% 71 | # # type de cas de migration 72 | mutate(cas_MIG = case_when(!!sym(NIVGEO_ACTU) == !!sym(NIVGEO_ANTE) ~ "ISO", 73 | !!sym(NIVGEO_ACTU) != !!sym(NIVGEO_ANTE) ~ "MIG", 74 | TRUE ~ "NA") ) 75 | 76 | } 77 | 78 | # cas 2 : variable de ventilation renseignée -> groupement par NIVGEO et variable de ventilation 79 | else { 80 | 81 | # création de la table de comptage de flux 82 | NIVGEO_flux_mig <- 83 | TABLE_ok %>% 84 | group_by(!!sym(VAR_VENTIL), 85 | !!sym(NIVGEO_ACTU), 86 | !!sym(NIVGEO_ANTE)) %>% 87 | summarise(nb_ind = sum(!!sym(VAR_NB))) %>% 88 | # pourcentage en ligne sur total NIVGEO_ACTU 89 | mutate(pct_ind_RES = nb_ind / sum(nb_ind)) %>% 90 | # pourcentage en ligne sur total NIVGEO_ANTE 91 | ungroup() %>% 92 | group_by(!!sym(VAR_VENTIL), 93 | !!sym(NIVGEO_ANTE)) %>% 94 | mutate(pct_ind_DCRAN = nb_ind / sum(nb_ind)) %>% 95 | # # type de cas de migration 96 | mutate(cas_MIG = case_when(!!sym(NIVGEO_ACTU) == !!sym(NIVGEO_ANTE) ~ "ISO", 97 | !!sym(NIVGEO_ACTU) != !!sym(NIVGEO_ANTE) ~ "MIG", 98 | TRUE ~ "NA") ) 99 | 100 | } 101 | 102 | } 103 | 104 | 105 | -------------------------------------------------------------------------------- /R/ajout_libelles_nivgeo.R: -------------------------------------------------------------------------------- 1 | #' @name ajout_libelles_nivgeo 2 | #' 3 | #' @title Ajouter le libellé d'une unité géographique 4 | #' 5 | #' @description Ajouter le libellé d'une unité géographique à partir du champ contenant le code en format court. 6 | #' 7 | #' @param TABLE Table en entrée avec un champ contenant un code d'unité géographique. 8 | #' @param NIVGEO_IN Nom du champ de la table en entrée contenant le code d'unité géographique (en format court, liste : cf. details ci-dessous). 9 | #' @param NIVGEO_OUT Nom du code d'unité géographique (en format court, liste : cf. details ci-dessous). 10 | #' @param LIBGEO_OUT Nom du champ du libellé d'unité géographique à ajouter dans la table en sortie (par défaut : préfixe "LIB_"). 11 | #' @param COG_NIVGEO Millésime du Code Officiel Géographique du code d'unité géographique en entrée (liste : cf. details ci-dessous). 12 | #' 13 | #' @return Renvoie une table avec un champ supplémentaire contenant le libellé de l'unité géographique. 14 | #' 15 | #' @importFrom dplyr tribble distinct pull mutate select left_join case_when group_by summarise ungroup rename mutate_if bind_rows 16 | #' @importFrom rlang sym 17 | #' 18 | #' @examples 19 | #' \dontrun{ 20 | #' # Ajout du champ 'LIB_DEP' contenant le libellé en clair du code DEP 21 | #' indics_migres_DEP <- 22 | #' ajout_libelles_nivgeo(TABLE = indics_migres_DEP, 23 | #' NIVGEO_IN ="DEP", 24 | #' COG_NIVGEO = 2019) 25 | #' 26 | #'# Ajout du champ 'LIB_REG_ANTE' contenant le libellé en clair des codes EPCI 27 | #' flux_migres_EPCI <- 28 | #' ajout_libelles_nivgeo(TABLE = flux_migres_EPCI, 29 | #' NIVGEO_IN ="EPCI_ANTE", 30 | #' NIVGEO_OUT ="EPCI", 31 | #' LIBGEO_OUT = "LIB_EPCI_ANTE", 32 | #' COG_NIVGEO = 2019) %>% 33 | #' ajout_libelles_nivgeo(TABLE = ., 34 | #' NIVGEO_IN ="EPCI_ACTU", 35 | #' NIVGEO_OUT ="EPCI", 36 | #' LIBGEO = "LIB_EPCI_ACTU", 37 | #' COG_NIVGEO = 2019) 38 | #'} 39 | #' 40 | #' @details 41 | #' Les millésimes du COG disponibles sont les suivants : 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019. \cr 42 | #' 43 | #' Les niveaux supra-communaux disponibles sont les suivants : 44 | #' \itemize{ 45 | #' \item{Département ('DEP')} 46 | #' \item{Région administrative ('REG')} 47 | #' \item{Établissement public de coopération intercommunale ('EPCI')} 48 | #' \item{Arrondissement ('ARR')} 49 | #' \item{Canton-ou-ville ('CV')} 50 | #' \item{Zone d'emploi ('ZE2010')} 51 | #' \item{Unité Urbaine ('UU2010')} 52 | #' \item{Aire Urbaine ('AU2010')} 53 | #' \item{Zonage en Aires Urbaines ('CATAEU2010')} 54 | #' \item{Bassin de vie ('BV2012')} 55 | #' \item{Type de densité selon la grille de densité communale ('TYPEDENS')}} 56 | #' 57 | #' @export 58 | 59 | ajout_libelles_nivgeo <- function(TABLE, NIVGEO_IN, NIVGEO_OUT , LIBGEO_OUT, COG_NIVGEO) { 60 | 61 | # si NIVGEO_IN pas renseigné : il prend la valeur de NIVGEO_OUT 62 | if( missing(NIVGEO_OUT ) ) { NIVGEO_OUT = NIVGEO_IN } 63 | else { NIVGEO_OUT = NIVGEO_OUT } 64 | 65 | # si NIVGEO_IN pas renseigné : il prend la valeur de NIVGEO_OUT 66 | if( missing(LIBGEO_OUT ) ) { LIBGEO_OUT = paste0("LIB_",NIVGEO_OUT) } 67 | else { LIBGEO_OUT = LIBGEO_OUT } 68 | 69 | # référentiels ad hoc 70 | ref_CATAEU2010 <- 71 | tribble( 72 | ~CATAEU2010, ~LIB_CATAEU2010, 73 | '111' , "Grands pôles urbains", 74 | '112' , "Couronne des grands pôles urbains", 75 | "120" , "Communes multipolarisées", 76 | '211' , "Moyens pôles", 77 | '212' , "Couronne des moyens pôles", 78 | '221' , "Petits pôles", 79 | '222' , "Couronne des petits pôles", 80 | '300' , "Autres communes multipolarisées", 81 | '400' , "Communes isolées hors influence des pôles") 82 | 83 | ref_GRIDDENS <- 84 | tribble( 85 | ~TYPEDENS, ~LIB_TYPEDENS, 86 | "1" , "Dense", 87 | "2" , "Densité intermédiaire", 88 | "3" , "Peu dense", 89 | "4" , "Très peu dense") 90 | 91 | REF_libelles <- 92 | get(paste0("libelles_supracom_", COG_NIVGEO)) %>% 93 | bind_rows(ref_CATAEU2010 %>% mutate(NIVGEO = "CATAEU2010") %>% rename(CODGEO = CATAEU2010, LIBGEO = LIB_CATAEU2010)) %>% 94 | bind_rows(ref_GRIDDENS %>% mutate(NIVGEO = "TYPEDENS") %>% rename(CODGEO = TYPEDENS, LIBGEO = LIB_TYPEDENS)) %>% 95 | # libellés communes 96 | bind_rows(get(paste0("table_supracom_",COG_NIVGEO)) %>% dplyr::select(CODGEO,LIBGEO) %>% mutate(NIVGEO = "COMM") ) %>% 97 | rename(NIVGEO_REF = NIVGEO) 98 | 99 | 100 | TABLE <- TABLE %>% rename(NIVGEO_OUT = NIVGEO_IN) %>% 101 | left_join(REF_libelles %>% filter(NIVGEO_REF == NIVGEO_OUT) %>% dplyr::select(CODGEO, LIBGEO), 102 | by = c( 'NIVGEO_OUT' = 'CODGEO') ) %>% 103 | #ordre variables dans dataframe 104 | dplyr::select(NIVGEO_OUT, LIBGEO, everything()) 105 | 106 | # renommer variables NIVGEO et LIBGEO 107 | TABLE <- TABLE %>% rename(!!NIVGEO_IN := NIVGEO_OUT, !!LIBGEO_OUT := LIBGEO ) 108 | 109 | } 110 | 111 | -------------------------------------------------------------------------------- /docs/authors.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Authors • migR 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 44 | 45 | 46 | 47 | 48 | 49 |
    50 |
    51 | 105 | 106 | 107 |
    108 | 109 |
    110 |
    111 | 114 | 115 |
      116 |
    • 117 |

      Observatoire des Territoires. Maintainer, author. 118 |

      119 |
    • 120 |
    • 121 |

      Joel Gombin. Author. 122 |

      123 |
    • 124 |
    125 | 126 |
    127 | 128 |
    129 | 130 | 131 |
    132 | 135 | 136 |
    137 |

    Site built with pkgdown.

    138 |
    139 | 140 |
    141 |
    142 | 143 | 144 | 145 | 146 | 147 | 148 | -------------------------------------------------------------------------------- /docs/pkgdown.css: -------------------------------------------------------------------------------- 1 | /* Sticky footer */ 2 | 3 | /** 4 | * Basic idea: https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ 5 | * Details: https://github.com/philipwalton/solved-by-flexbox/blob/master/assets/css/components/site.css 6 | * 7 | * .Site -> body > .container 8 | * .Site-content -> body > .container .row 9 | * .footer -> footer 10 | * 11 | * Key idea seems to be to ensure that .container and __all its parents__ 12 | * have height set to 100% 13 | * 14 | */ 15 | 16 | html, body { 17 | height: 100%; 18 | } 19 | 20 | body > .container { 21 | display: flex; 22 | height: 100%; 23 | flex-direction: column; 24 | 25 | padding-top: 60px; 26 | } 27 | 28 | body > .container .row { 29 | flex: 1 0 auto; 30 | } 31 | 32 | footer { 33 | margin-top: 45px; 34 | padding: 35px 0 36px; 35 | border-top: 1px solid #e5e5e5; 36 | color: #666; 37 | display: flex; 38 | flex-shrink: 0; 39 | } 40 | footer p { 41 | margin-bottom: 0; 42 | } 43 | footer div { 44 | flex: 1; 45 | } 46 | footer .pkgdown { 47 | text-align: right; 48 | } 49 | footer p { 50 | margin-bottom: 0; 51 | } 52 | 53 | img.icon { 54 | float: right; 55 | } 56 | 57 | img { 58 | max-width: 100%; 59 | } 60 | 61 | /* Typographic tweaking ---------------------------------*/ 62 | 63 | .contents h1.page-header { 64 | margin-top: calc(-60px + 1em); 65 | } 66 | 67 | /* Section anchors ---------------------------------*/ 68 | 69 | a.anchor { 70 | margin-left: -30px; 71 | display:inline-block; 72 | width: 30px; 73 | height: 30px; 74 | visibility: hidden; 75 | 76 | background-image: url(./link.svg); 77 | background-repeat: no-repeat; 78 | background-size: 20px 20px; 79 | background-position: center center; 80 | } 81 | 82 | .hasAnchor:hover a.anchor { 83 | visibility: visible; 84 | } 85 | 86 | @media (max-width: 767px) { 87 | .hasAnchor:hover a.anchor { 88 | visibility: hidden; 89 | } 90 | } 91 | 92 | 93 | /* Fixes for fixed navbar --------------------------*/ 94 | 95 | .contents h1, .contents h2, .contents h3, .contents h4 { 96 | padding-top: 60px; 97 | margin-top: -40px; 98 | } 99 | 100 | /* Static header placement on mobile devices */ 101 | @media (max-width: 767px) { 102 | .navbar-fixed-top { 103 | position: absolute; 104 | } 105 | .navbar { 106 | padding: 0; 107 | } 108 | } 109 | 110 | 111 | /* Sidebar --------------------------*/ 112 | 113 | #sidebar { 114 | margin-top: 30px; 115 | } 116 | #sidebar h2 { 117 | font-size: 1.5em; 118 | margin-top: 1em; 119 | } 120 | 121 | #sidebar h2:first-child { 122 | margin-top: 0; 123 | } 124 | 125 | #sidebar .list-unstyled li { 126 | margin-bottom: 0.5em; 127 | } 128 | 129 | .orcid { 130 | height: 16px; 131 | vertical-align: middle; 132 | } 133 | 134 | /* Reference index & topics ----------------------------------------------- */ 135 | 136 | .ref-index th {font-weight: normal;} 137 | 138 | .ref-index td {vertical-align: top;} 139 | .ref-index .alias {width: 40%;} 140 | .ref-index .title {width: 60%;} 141 | 142 | .ref-index .alias {width: 40%;} 143 | .ref-index .title {width: 60%;} 144 | 145 | .ref-arguments th {text-align: right; padding-right: 10px;} 146 | .ref-arguments th, .ref-arguments td {vertical-align: top;} 147 | .ref-arguments .name {width: 20%;} 148 | .ref-arguments .desc {width: 80%;} 149 | 150 | /* Nice scrolling for wide elements --------------------------------------- */ 151 | 152 | table { 153 | display: block; 154 | overflow: auto; 155 | } 156 | 157 | /* Syntax highlighting ---------------------------------------------------- */ 158 | 159 | pre { 160 | word-wrap: normal; 161 | word-break: normal; 162 | border: 1px solid #eee; 163 | } 164 | 165 | pre, code { 166 | background-color: #f8f8f8; 167 | color: #333; 168 | } 169 | 170 | pre code { 171 | overflow: auto; 172 | word-wrap: normal; 173 | white-space: pre; 174 | } 175 | 176 | pre .img { 177 | margin: 5px 0; 178 | } 179 | 180 | pre .img img { 181 | background-color: #fff; 182 | display: block; 183 | height: auto; 184 | } 185 | 186 | code a, pre a { 187 | color: #375f84; 188 | } 189 | 190 | a.sourceLine:hover { 191 | text-decoration: none; 192 | } 193 | 194 | .fl {color: #1514b5;} 195 | .fu {color: #000000;} /* function */ 196 | .ch,.st {color: #036a07;} /* string */ 197 | .kw {color: #264D66;} /* keyword */ 198 | .co {color: #888888;} /* comment */ 199 | 200 | .message { color: black; font-weight: bolder;} 201 | .error { color: orange; font-weight: bolder;} 202 | .warning { color: #6A0366; font-weight: bolder;} 203 | 204 | /* Clipboard --------------------------*/ 205 | 206 | .hasCopyButton { 207 | position: relative; 208 | } 209 | 210 | .btn-copy-ex { 211 | position: absolute; 212 | right: 0; 213 | top: 0; 214 | visibility: hidden; 215 | } 216 | 217 | .hasCopyButton:hover button.btn-copy-ex { 218 | visibility: visible; 219 | } 220 | 221 | /* mark.js ----------------------------*/ 222 | 223 | mark { 224 | background-color: rgba(255, 255, 51, 0.5); 225 | border-bottom: 2px solid rgba(255, 153, 51, 0.3); 226 | padding: 1px; 227 | } 228 | 229 | /* vertical spacing after htmlwidgets */ 230 | .html-widget { 231 | margin-bottom: 10px; 232 | } 233 | -------------------------------------------------------------------------------- /docs/articles/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Articles • migR 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 45 | 46 | 47 | 48 | 49 | 50 |
    51 |
    52 | 107 | 108 | 109 |
    110 | 111 |
    112 |
    113 | 116 | 117 | 126 |
    127 |
    128 | 129 |
    130 | 133 | 134 |
    135 |

    Site built with pkgdown 1.3.0.

    136 |
    137 |
    138 |
    139 | 140 | 141 | 142 | 143 | 144 | 145 | -------------------------------------------------------------------------------- /R/chargement_fd_migcom.R: -------------------------------------------------------------------------------- 1 | #' @name chargement_fd_migcom 2 | #' 3 | #' @title Charger un fichier détail MIGCOM de l'Insee 4 | #' 5 | #' @description Télécharger un fichier détail MIGCOM (Migrations résidentielles entre commune de résidence et commune de résidence antérieure) depuis le site de l'Insee puis le monter en mémoire, ou uniquement le charger si le fichier txt est disponible en local. 6 | #' 7 | #' @param telechargement Vaut TRUE si le fichier doit être téléchargé depuis le site internet de l'Insee, FALSE si le fichier txt est disponible en local. 8 | #' @param monet Vaut TRUE si le fichier détail doit être importé dans une base de données `MonetDBLite`, FALSE s'il doit être importé en mémoire vive. 9 | #' @param anneeRP Millésime du recensement de la population (RP) de l'Insee. Peut prendre les valeurs "2008", "2013", "2014", "2015" ou "2016". Non renseigné si telechargement vaut TRUE. 10 | #' @param dossier_dest_TL Dossier de destination où va être stockée l'archive zip et les fichiers txt dézippés. S'il n'existe pas, il sera créé. Non renseigné si telechargement vaut FALSE. 11 | #' @param chemin_FD Lien vers le fichier txt (FD_MIGCOM) en local. Non renseigné si telechargement vaut TRUE. 12 | #' 13 | #' @return Retourne une table de détail des migrations résidentielles avec pour chaque individu sa commune de résidence actuelle et commune de résidence antérieure. 14 | #' 15 | #' @importFrom dplyr %>% filter mutate 16 | #' @importFrom utils download.file unzip 17 | #' @importFrom readr read_csv 18 | #' @importFrom tibble tribble as_tibble 19 | #' @importFrom Insee2MonetDB Insee2MonetDB 20 | #' @importFrom stringr str_replace 21 | #' 22 | #' @examples 23 | #' \dontrun{ 24 | #' # Téléchargement du fichier MIGCOM du dernier RP en date depuis le site internet de l'Insee dans le dossier "./data" 25 | #' FD_MIGCOM_2016 <- chargement_fd_migcom(anneeRP = "2016", telechargement = TRUE, dossier_dest_TL = "./data") 26 | #' 27 | #' # Chargement du fichier txt MIGCOM disponible en local 28 | #' FD_MIGCOM_2016 <- chargement_fd_migcom(chemin_FD = "./data/RP2016_MIGCOM_csv/FD_MIGCOM_2016.csv") 29 | #' } 30 | #' 31 | #' @export 32 | 33 | 34 | chargement_fd_migcom <- function(telechargement = FALSE, monet = TRUE, anneeRP, dossier_dest_TL, chemin_FD){ 35 | 36 | if(telechargement %in% TRUE){ 37 | 38 | # création du dossier de destination 39 | if(missing(dossier_dest_TL) %in% FALSE){ 40 | dir.create(file.path(dossier_dest_TL), showWarnings = FALSE) 41 | } 42 | 43 | # liste des fichiers MIGCOM disponibles 44 | liste_FD_MIGCOM <- 45 | tibble::tribble( 46 | ~millesime_RP, ~url_page, ~url_doc, ~url_txt, ~nom_dossier,~nom_fichier, 47 | "2016","https://www.insee.fr/fr/statistiques/4171543?sommaire=4171558", "https://www.insee.fr/fr/statistiques/fichier/4171543/contenu_RP2016_migcom.pdf","https://www.insee.fr/fr/statistiques/fichier/4171543/RP2016_migcom_csv.zip","RP2016_MIGCOM_csv","FD_MIGCOM_2016.csv", 48 | "2015","https://www.insee.fr/fr/statistiques/3566042?sommaire=3558417", "https://www.insee.fr/fr/statistiques/fichier/3566042/contenu_rp2015_migcom.pdf","https://www.insee.fr/fr/statistiques/fichier/3566042/rp2015_migcom_txt.zip","rp2015_migcom_txt","FD_MIGCOM_2015.txt", 49 | "2014","https://www.insee.fr/fr/statistiques/2866333?sommaire=2866354", "https://www.insee.fr/fr/statistiques/fichier/2866333/contenu_rp2014_migcom.pdf","https://www.insee.fr/fr/statistiques/fichier/2866333/rp2014_migcom_txt.zip","rp2014_migcom_txt","FD_MIGCOM_2014.txt", 50 | "2013","https://www.insee.fr/fr/statistiques/2409519?sommaire=2409559", "https://www.insee.fr/fr/statistiques/fichier/2409519/contenu_rp2013_migcom.pdf","https://www.insee.fr/fr/statistiques/fichier/2409519/rp2013_migcom_txt.zip","rp2013_migcom_txt","FD_MIGCOM_2013.txt", 51 | "2008","https://www.insee.fr/fr/statistiques/2408687?sommaire=2409062", "https://www.insee.fr/fr/statistiques/fichier/2408687/contenu_rp2008_migcom.pdf","https://www.insee.fr/fr/statistiques/fichier/2408687/rp2008_migcom_txt.zip","rp2008_migcom_txt","FD_MIGCOM_2008.txt") 52 | 53 | parametres_DL <- liste_FD_MIGCOM %>% filter(millesime_RP == anneeRP) 54 | # téléchargement du fichier zippé source 55 | download.file(parametres_DL$url_txt, 56 | destfile = paste0(dossier_dest_TL, "/",parametres_DL$nom_dossier, ".zip"), 57 | method='auto') 58 | 59 | # dézipper fichiers 60 | unzip(paste0(dossier_dest_TL, "/",parametres_DL$nom_dossier, ".zip"), 61 | exdir=paste0(dossier_dest_TL, "/", parametres_DL$nom_dossier) ) 62 | 63 | if (monet) { 64 | output <- Insee2MonetDB::Insee2MonetDB(csvfile = paste0(dossier_dest_TL, "/",parametres_DL$nom_dossier,"/",parametres_DL$nom_fichier)) 65 | return(output %>% as.data.frame()) 66 | } 67 | 68 | 69 | # lecture et import du fichier FD zippé 70 | output <- readr::read_delim(paste0(dossier_dest_TL, "/",parametres_DL$nom_dossier,"/",parametres_DL$nom_fichier), 71 | delim = ";", col_types = cols(.default = "c")) %>% 72 | dplyr::mutate(IPONDI = stringr::str_replace(IPONDI, ",",'.')) %>% 73 | dplyr::mutate(AGEREVQ = as.numeric(AGEREVQ), 74 | IPONDI = as.numeric(IPONDI)) %>% 75 | tibble::as_tibble() 76 | 77 | } else{ 78 | 79 | if (monet) { 80 | output <- Insee2MonetDB::Insee2MonetDB(csvfile = chemin_FD) 81 | return(output %>% as.data.frame()) 82 | } 83 | 84 | # lecture et import du fichier FD zippé 85 | output <- readr::read_delim(chemin_FD, delim = ";", col_types = cols(.default = "c")) %>% 86 | dplyr::mutate(IPONDI = stringr::str_replace(IPONDI, ",",'.')) %>% 87 | dplyr::mutate(AGEREVQ = as.numeric(AGEREVQ), 88 | IPONDI = as.numeric(IPONDI)) %>% 89 | tibble::as_tibble() 90 | 91 | } 92 | 93 | 94 | } 95 | -------------------------------------------------------------------------------- /data-raw/annexes_dev_migR.R: -------------------------------------------------------------------------------- 1 | 2 | # bible : https://github.com/ColinFay/erum2018/ 3 | 4 | ########## 5 | # packages dependances 6 | library(data.table) 7 | library(dplyr) 8 | library(tidyr) 9 | library(COGugaison) 10 | library(janitor) 11 | library(magrittr) 12 | library(stringr) 13 | library(usethis) 14 | library(roxygen2) 15 | library(migR) 16 | 17 | memory.limit(size = 8000000) 18 | 19 | #Sys.which("git") 20 | # pour afficher tab Git ? 21 | 22 | FD_MIGCOM_2015 <- chargement_fd_migcom(chemin_FD = "C:/Users/mgarnier/Desktop/sauvegarde_temporaire/RP/rp2015_migcom_txt/FD_MIGCOM_2015.txt", monet = TRUE) 23 | 24 | ############ 25 | # référentiels sources à ajouter 26 | 27 | library(readxl) 28 | library(janitor) 29 | # import grille densité et ZAU 30 | COMM_GRIDENS <- read_excel("N:/Transverse/Donnees_Obs/Donnees_Statistiques/Insee/Grille de densité communale/2016/grille_densite_2016/grille_densite_2016.xls", sheet = "grille_densite_2016",col_types = "text") %>% 31 | clean_names() %>% 32 | mutate(CODGEO = str_sub(paste0("00",depcom),-5,-1)) %>% 33 | dplyr::select(CODGEO, TYPEDENS = typo_degre_de_densite) 34 | 35 | library(readxl) 36 | REF_VARS_INSEE_FD_MIGCOM <- read_excel("N:/Transverse/Donnees_Obs/Donnees_Statistiques/Insee/RP/RP2008/Fichiers détails/RP2008_migcom_txt/REF_VARS_MIGCOM_RP2008.xlsx", sheet = "data") %>% 37 | rbind(read_excel("N:/Transverse/Donnees_Obs/Donnees_Statistiques/Insee/RP/RP2013/Fichiers détails/rp2013_MIGCOM_txt/REF_VARS_MIGCOM_RP2013.xlsx", sheet = "data")) %>% 38 | rbind(read_excel("N:/Transverse/Donnees_Obs/Donnees_Statistiques/Insee/RP/RP2014/Fichiers détails/rp2014_MIGCOM_txt/REF_VARS_MIGCOM_RP2014.xlsx", sheet = "data")) %>% 39 | rbind(read_excel("N:/Transverse/Donnees_Obs/Donnees_Statistiques/Insee/RP/RP2015/Fichiers détails/rp2015_MIGCOM_txt/REF_VARS_MIGCOM_RP2015.xlsx", sheet = "data")) 40 | 41 | 42 | 43 | # modification de la modalité CS1 artisans 44 | 45 | REF_VARS_INSEE_FD_MIGCOM <- REF_VARS_INSEE_FD_MIGCOM %>% 46 | mutate(LIBMOD = case_when(CODVAR %in% 'CS1' & CODMOD %in% '2' ~ "Artisans, commerçants et chefs d'entreprise", 47 | TRUE ~ as.character(LIBMOD))) 48 | 49 | # sauvegarde des données dans /data 50 | 51 | save(COMM_GRIDENS, file = "./data/COMM_GRIDENS.RData") 52 | save(REF_VARS_INSEE_FD_MIGCOM, file = "./data/REF_VARS_INSEE_FD_MIGCOM.RData") 53 | 54 | 55 | ##################### 56 | # données et environnement de test 57 | #options(encoding = 'UTF-8') 58 | options(scipen=999) 59 | 60 | 61 | # test fonctions 62 | FD_MIGCOM_2014 <- chargement_fd_migcom(chemin_FD = "C:/Users/mgarnier/Desktop/sauvegarde_temporaire/RP/FD_MIGCOM_2014.txt") 63 | #FD_MIGCOM_2014 <- chargement_fd_migcom(anneeRP = "2014", telechargement = TRUE, dossier_dest_TL = "./datatest") 64 | 65 | FD_MIGCOM_2014 <- 66 | ajout_nivgeo_supracomm(TABLE = FD_MIGCOM_2014 , 67 | CODE_COMMUNE = "DCRAN", 68 | SUFFIXE = "ANTE", 69 | NIVGEO= c("DEP",'REG'), 70 | COG_IN = 2016, COG_NIVGEO = 2018) %>% 71 | ajout_nivgeo_supracomm(TABLE = . , 72 | CODE_COMMUNE = "COMMUNE", 73 | SUFFIXE = "ACTU", 74 | NIVGEO= c("DEP",'REG'), 75 | COG_IN = 2016, COG_NIVGEO = 2018) 76 | 77 | 78 | flux_migres_REG_CS1 <- 79 | calcul_flux_migres(TABLE =FD_MIGCOM_2014 , 80 | VAR_NB = "IPONDI", 81 | VAR_VENTIL = "CS1", 82 | MIG_NET_INTERNE=TRUE, 83 | NIVGEO_ANTE ="REG_ANTE", 84 | NIVGEO_ACTU ="REG_ACTU") 85 | 86 | 87 | flux_migres_REG_CS1 <- 88 | ajout_libelles_nivgeo(TABLE = flux_migres_REG_CS1, 89 | NIVGEO_IN ="REG_ANTE", 90 | NIVGEO_OUT ="REG", 91 | LIBGEO_OUT = "LIB_REG_ANTE", 92 | COG_NIVGEO = 2018) %>% 93 | ajout_libelles_nivgeo(TABLE = ., 94 | NIVGEO_IN ="REG_ACTU", 95 | NIVGEO_OUT ="REG", 96 | LIBGEO = "LIB_REG_ACTU", 97 | COG_NIVGEO = 2018) 98 | 99 | 100 | ajout_libelles_varventil_insee(TABLE = flux_migres_REG_CS1, 101 | VAR ="CS1", 102 | MILLESIME_RP = 2014) 103 | 104 | indics_migres_REG_CS1 <- 105 | calcul_indics_migres(TABLE =flux_migres_REG_CS1, 106 | NIVGEO_ANTE ="REG_ANTE", 107 | NIVGEO_ACTU ="REG_ACTU", 108 | NIVGEO ="REG", 109 | VAR_VENTIL = "CS1", 110 | VAR_NB = "nb_ind") 111 | 112 | indics_migres_EPCI_CS1_RENOUV <- 113 | calcul_indics_renouv(TABLE = indics_migres_REG_CS1, 114 | NIVGEO = "REG", 115 | NB_ENTR = "nb_ind_ENTR", 116 | NB_SORT = "nb_ind_SORT", 117 | NB_AUTO = "nb_ind_AUTO", 118 | NB_PRES = "nb_ind_PRES", 119 | VAR_VENTIL ="CS1") 120 | 121 | 122 | ################### 123 | ## tests 124 | 125 | library(testthat) 126 | usethis::use_test("ajout_libelles_nivgeo") 127 | 128 | library(pkgdown) 129 | # rappels 130 | 131 | #générer doc .Rd 132 | roxygen2::roxygenise() 133 | 134 | 135 | #vignettes : 136 | Use devtools::build_vignettes() to render the vignette (in /inst/doc). 137 | 138 | # pour générer les articles issues des vignettes 139 | pkgdown::build_articles(pkg = ".") 140 | 141 | build_home(pkg = ".", override = list(), preview = NA,quiet = TRUE) 142 | 143 | # page reference 144 | template_reference() 145 | build_reference() 146 | 147 | # vérification des erreurs 148 | devtools::check() 149 | 150 | 151 | # pour écrire rmd avec add-in 152 | library(remedy) 153 | 154 | # alertes : 155 | # signe % ne passe pas dans .Rd 156 | # réinstaller package après pull 157 | -------------------------------------------------------------------------------- /R/calcul_indics_renouv.R: -------------------------------------------------------------------------------- 1 | #' @name calcul_indics_renouv 2 | #' 3 | #' @title Calculer les indicateurs de catégorisation et de renouvellement de la population par les migrations 4 | #' 5 | #' @description A partir d'une table en entrée contenant les indicateurs relatifs aux migrations résidentielles par territoire (population entrante, sortante, autochtone et présente). 6 | #' 7 | #' @param TABLE Table en entrée contenant les indicateurs relatifs aux migrations résidentielles par territoire (population entrante, sortante, autochtone et présente). 8 | #' @param NIVGEO Nom du champ de la table en entrée contenant le niveau géographique. 9 | #' @param NB_ENTR Nom du champ de la table en entrée contenant le nombre d'individus étant entré dans le territoire. 10 | #' @param NB_SORT Nom du champ de la table en entrée contenant le nombre d'individus étant sorti du territoire. 11 | #' @param NB_AUTO Nom du champ de la table en entrée contenant le nombre d'individus étant présente dans le territoire en N-x. 12 | #' @param NB_PRES Nom du champ de la table en entrée contenant le nombre d'individus étant présente dans le territoire en N. 13 | #' @param VAR_VENTIL Nom du champ de la variable de ventilation de la population, de type tranche d'âge, groupe socio-professionnel, etc... (facultatif). 14 | #' 15 | #' 16 | #' @return Renvoie une table contenant l'identifiant des territoires ainsi que les indicateurs par type de migrations (immigration, émigration, migrations) par modalité de la variable de ventilation (groupe socio-professionnel par exemple) 17 | #' 18 | #' @importFrom dplyr tribble distinct pull mutate select left_join case_when group_by summarise ungroup rename mutate_all bind_rows everything funs vars 19 | #' @importFrom rlang sym 20 | #' @importFrom tidyr gather 21 | #' 22 | #' @examples 23 | #'\dontrun{ 24 | #' # Calcul les indicateurs de catégorisation et de renouvellement de la population par les migrations selon le groupe socio-professionnel au niveau régional 25 | #'indics_mig_EPCI_CS1_RENOUV <- 26 | #' calcul_indics_renouv(TABLE = indics_mig_EPCI_CS1, 27 | #' NIVGEO = "EPCI", 28 | #' NB_ENTR = "nb_ind_ENTR", 29 | #' NB_SORT = "nb_ind_SORT", 30 | #' NB_AUTO = "nb_ind_AUTO", 31 | #' NB_PRES = "nb_ind_PRES", 32 | #' VAR_VENTIL ="CS1") 33 | #' 34 | #'} 35 | #' 36 | #' 37 | #' @details 38 | #' Les indicateurs générés dans le champ 'type_indice' de la table de sortie sont les suivants (cf. vignette pour les définitions exactes et les formules de calcul) : 39 | #' \itemize{ 40 | #' \item{Indice de catégorisation par l'immigration ('ICI')} 41 | #' \item{Indice de catégorisation par l'émigration ('ICE')} 42 | #' \item{Indice de catégorisation par les migrations ('ICM')} 43 | #' \item{Indice de renouvellement par l'immigration ('IRI')} 44 | #' \item{Indice de renouvellement par l'émigration ('IRE')} 45 | #' \item{Indice de renouvellement par les migrations ('IRM')} 46 | #' \item{Part de la catégorie dans la population présente ('pct_ind_PRES')} 47 | #' \item{Evolution de la part de la catégorie au sein de la population par le jeu des migrations internes ('evol_pct_AUTO_PRES')}} 48 | #' 49 | #' Chacun des 3 indices de catégorisation (ICI, ICE, ICM) est calculé pour chacune des modalités de la variable de ventilation indiquées dans le champ qui porte son nom. 50 | #' Les 3 indices de renouvellement (IRI, IRE, IRM) ne sont au contraire indiqués qu'une seule fois. 51 | #' La valeur de l'indice correspondant est indiquée dans le champ 'valeur'. 52 | #' L'évolution de la part de la catégorie au sein de la population par le jeu des migrations internes (evol_pct_AUTO_PRES) est égale à la différence entre la part de cette catégorie dans la population présente et la part de cette même catégorie dans la population autochtone. 53 | #' 54 | #' @export 55 | #' 56 | 57 | 58 | calcul_indics_renouv <- function(TABLE, NIVGEO, NB_ENTR, NB_SORT, NB_AUTO,NB_PRES, VAR_VENTIL) { 59 | 60 | # pré-traitements 61 | indics_mig_RENOUV <- 62 | TABLE %>% 63 | select(!!sym(NIVGEO),!!sym(VAR_VENTIL), !!sym(NB_ENTR), !!sym(NB_SORT), !!sym(NB_AUTO), !!sym(NB_PRES)) %>% 64 | # calcul part de chaque CS dans la pop entrante, sortante, autochtone 65 | group_by(!!sym(NIVGEO)) %>% 66 | mutate_at(.vars = vars( c(!!sym(NB_ENTR), !!sym(NB_SORT), !!sym(NB_AUTO), !!sym(NB_PRES)) ), 67 | .funs = funs(pct = ./sum(.) )) %>% 68 | # différences de taux 69 | mutate(diff_pct_AUTO_ENTR = (!!sym(paste0(NB_AUTO, "_pct")) - !!sym(paste0(NB_ENTR, "_pct"))) ^2 , 70 | diff_pct_AUTO_SORT = (!!sym(paste0(NB_AUTO, "_pct")) - !!sym(paste0(NB_SORT, "_pct"))) ^2 , 71 | SM = !!sym(NB_ENTR) - !!sym(NB_SORT), 72 | ratio_SM_ind_pres = (abs(SM) / !!sym(NB_PRES)) ^2, 73 | # part de la catégorie dans la population présente 74 | pct_ind_PRES = !!sym(paste0(NB_PRES, "_pct")), 75 | # évolution de la part de la CS par les migrations internes 76 | evol_pct_AUTO_PRES = !!sym(paste0(NB_PRES, "_pct")) - !!sym(paste0(NB_AUTO, "_pct")) ) 77 | 78 | # indices de renouvellement global 79 | indics_mig_RENOUV.GLOBAL <- 80 | indics_mig_RENOUV %>% ungroup() %>% 81 | group_by(!!sym(NIVGEO)) %>% 82 | summarise(IRI = sum(diff_pct_AUTO_ENTR), 83 | IRE = sum(diff_pct_AUTO_SORT), 84 | IRM = sqrt(sum(ratio_SM_ind_pres)) ) %>% 85 | mutate(!!VAR_VENTIL := "GLOBAL") %>% 86 | select(NIVGEO,VAR_VENTIL,IRI,IRE,IRM ) %>% 87 | gather(type_indice, valeur, - NIVGEO,-VAR_VENTIL) 88 | 89 | 90 | 91 | # indices de renouvellement par catégorie de ventilation 92 | 93 | # indices de modifications structure population 94 | indics_mig_RENOUV.CLASSE <- 95 | indics_mig_RENOUV %>% 96 | mutate(ICI = (!!sym(paste0(NB_ENTR, "_pct")) - !!sym(paste0(NB_AUTO, "_pct"))), 97 | ICE = (!!sym(paste0(NB_AUTO, "_pct")) - !!sym(paste0(NB_SORT, "_pct")))) %>% 98 | # calcul des SM et nb_ind_PRES_pct sur tout sauf la modalité en question 99 | left_join( 100 | indics_mig_RENOUV %>% ungroup() %>% 101 | select(!!sym(NIVGEO), 102 | nb_ind_PRES_TOT = !!sym(NB_PRES), 103 | nb_ind_ENTR_TOT = !!sym(NB_ENTR), 104 | nb_ind_SORT_TOT = !!sym(NB_SORT)) %>% 105 | group_by(!!sym(NIVGEO)) %>% 106 | summarise_if(is.numeric, sum) %>% 107 | mutate(SM_TOT = nb_ind_ENTR_TOT - nb_ind_SORT_TOT), 108 | by = NIVGEO 109 | ) %>% 110 | mutate( ICM = ( SM / nb_ind_PRES ) - ( (SM_TOT - SM) / (nb_ind_PRES_TOT-!!sym(NB_PRES) ) ) ) %>% 111 | select(NIVGEO,VAR_VENTIL,ICI,ICE,ICM,pct_ind_PRES, evol_pct_AUTO_PRES ) %>% 112 | gather(type_indice, valeur, - NIVGEO, -VAR_VENTIL) 113 | 114 | indics_mig_RENOUV.OUT <- indics_mig_RENOUV.GLOBAL %>% bind_rows(indics_mig_RENOUV.CLASSE) 115 | 116 | } 117 | 118 | 119 | 120 | -------------------------------------------------------------------------------- /R/calcul_indics_migres.R: -------------------------------------------------------------------------------- 1 | #' @name calcul_indics_migres 2 | #' 3 | #' @title Calculer les indicateurs relatifs aux migrations résidentielles pour chaque zone. 4 | #' 5 | #' @description A partir d'une table en entrée contenant un champ de résidence actuelle et un champ de résidence antérieure sur le même niveau géographique, une table en sortie est créée contenant les indicateurs relatifs aux migrations résidentielles (liste des indicateurs : cf. details ci-dessous). 6 | #' 7 | #' @param TABLE Table en entrée contenant a minima un champ de résidence actuelle et un champ de résidence antérieure sur le même niveau géographique, ainsi qu'un champ comptablisant le nombre d'individus correspondant. 8 | #' @param NIVGEO_ANTE Nom du champ de la table en entrée contenant le niveau géographique de résidence antérieure. 9 | #' @param NIVGEO_ACTU Nom du champ de la table en entrée contenant le niveau géographique de résidence actuelle. 10 | #' @param NIVGEO Nom du champ de la table en sortie contenant le niveau géographique. 11 | #' @param VAR_NB Nom du champ de la table en entrée contenant le nombre d'individus correspondant à la migration résidence antérieure / résidence actuelle. 12 | #' @param VAR_VENTIL Nom du champ de la variable de ventilation de la population, de type tranche d'âge, groupe socio-professionnel, etc... (facultatif). 13 | #' 14 | #' @return Renvoie une table contenant un champ contenant l'identifiant des territoires ainsi que les indicateurs relatifs aux migrations résidentielles. 15 | #' 16 | #' @importFrom dplyr distinct pull mutate select left_join case_when group_by summarise ungroup rename mutate_if vars funs 17 | #' @importFrom rlang sym 18 | #' 19 | #' @examples 20 | #' \dontrun{ 21 | #' # Calcul du nombre de migrations entre résidence actuelle et résidence antérieure au niveau départemental 22 | #'indics_migres_REG <- 23 | #' calcul_indics_migres(TABLE =flux_migres_DEP, 24 | #' NIVGEO_ANTE ="DEP_ANTE", 25 | #' NIVGEO_ACTU ="DEP_ACTU", 26 | #' NIVGEO ="DEP", 27 | #' VAR_NB = "nb_ind") 28 | #' 29 | #' # Calcul du nombre de flux entre résidence actuelle et résidence antérieure au niveau régional, et ventilés par groupe socio-professionel 30 | #' indics_migres_REG_CS1 <- 31 | #' calcul_indics_migres(TABLE =flux_migres_REG_CS1, 32 | #' NIVGEO_ANTE ="DEP_ANTE", 33 | #' NIVGEO_ACTU ="DEP_ACTU", 34 | #' NIVGEO ="DEP", 35 | #' VAR_NB = "nb_ind") 36 | #'} 37 | #' 38 | #' @details 39 | #' Les indicateurs générés dans la table de sortie sont les suivants (cf. vignette pour les définitions exactes et les formules de calcul) : \cr 40 | #' \itemize{ 41 | #' \item{Population présente ('nb_ind_PRES')} 42 | #' \item{Population autochtone ('nb_ind_AUTO')} 43 | #' \item{Population stable ('nb_ind_ISO')} 44 | #' \item{Population entrante ('nb_ind_ENTR')} 45 | #' \item{Population sortante ('nb_ind_SORT')} 46 | #' \item{Solde migratoire ('SM')} 47 | #' \item{Taux de migration nette interne ('TM')} 48 | #' \item{Taux de rotation nette interne ('TR')} 49 | #' \item{Part d'entrants ('PE')} 50 | #' \item{Part de sortants ('PS')}} 51 | #' 52 | #' @export 53 | #' 54 | calcul_indics_migres <- function(TABLE, NIVGEO_ACTU, NIVGEO_ANTE,NIVGEO, VAR_NB,VAR_VENTIL=NULL) { 55 | 56 | # cas 1 : pas de variable de ventilation renseignée -> groupement par NIVGEO uniquement 57 | 58 | if(missing(VAR_VENTIL)) { 59 | 60 | NIVGEO_indics_mig <- 61 | TABLE %>% 62 | # nombre d'iso 63 | filter(!!sym(NIVGEO_ACTU) == !!sym(NIVGEO_ANTE) ) %>% 64 | group_by(!!sym(NIVGEO_ANTE)) %>% 65 | summarise(nb_ind_ISO = sum(!!sym(VAR_NB))) %>% 66 | rename(NIVGEO = !!sym(NIVGEO_ANTE)) %>% 67 | #nombre d'entrées 68 | left_join( TABLE %>% 69 | filter(!!sym(NIVGEO_ACTU) != !!sym(NIVGEO_ANTE) ) %>% 70 | group_by(!!sym(NIVGEO_ANTE)) %>% 71 | summarise(nb_ind_SORT = sum(!!sym(VAR_NB))) %>% 72 | rename(NIVGEO = !!sym(NIVGEO_ANTE)) , 73 | by = 'NIVGEO' ) %>% 74 | # #nombre de sorties 75 | left_join( TABLE %>% 76 | filter(!!sym(NIVGEO_ACTU) != !!sym(NIVGEO_ANTE) ) %>% 77 | group_by(!!sym(NIVGEO_ACTU)) %>% 78 | summarise(nb_ind_ENTR = sum(!!sym(VAR_NB))) %>% 79 | rename(NIVGEO = !!sym(NIVGEO_ACTU)) , 80 | by = 'NIVGEO' ) %>% 81 | # # valeur à 0 si NA 82 | mutate_if(is.numeric, funs(ifelse(is.na(.), 0, .))) %>% 83 | #solde migratoire 84 | mutate(SM =nb_ind_ENTR - nb_ind_SORT ) %>% 85 | # population résidente 86 | mutate(nb_ind_PRES = nb_ind_ISO + nb_ind_ENTR) %>% 87 | # population autochtone 88 | mutate(nb_ind_AUTO = nb_ind_ISO + nb_ind_SORT) %>% 89 | # indicateurs relatifs 90 | mutate(TM = (nb_ind_ENTR - nb_ind_SORT) / ((nb_ind_AUTO + nb_ind_PRES)/2) , 91 | PS = nb_ind_SORT / nb_ind_AUTO, 92 | PE = nb_ind_ENTR / nb_ind_PRES, 93 | TR = (nb_ind_ENTR + nb_ind_SORT) / ((nb_ind_AUTO + nb_ind_PRES)/2)) %>% 94 | 95 | # renommer variable NIVGEO 96 | rename(!!NIVGEO := NIVGEO) 97 | 98 | } 99 | 100 | # cas 2 : variable de ventilation renseignée -> groupement par NIVGEO et variable de ventilation 101 | 102 | else { 103 | 104 | NIVGEO_indics_mig <- 105 | TABLE %>% 106 | # nombre d'iso 107 | filter(!!sym(NIVGEO_ACTU) == !!sym(NIVGEO_ANTE) ) %>% 108 | group_by(!!sym(NIVGEO_ANTE),!!sym(VAR_VENTIL)) %>% 109 | summarise(nb_ind_ISO = sum(!!sym(VAR_NB))) %>% 110 | rename(NIVGEO = !!sym(NIVGEO_ANTE)) %>% 111 | # #nombre d'entrées 112 | left_join( TABLE %>% 113 | filter(!!sym(NIVGEO_ACTU) != !!sym(NIVGEO_ANTE) ) %>% 114 | group_by(!!sym(NIVGEO_ANTE),!!sym(VAR_VENTIL)) %>% 115 | summarise(nb_ind_SORT = sum(!!sym(VAR_NB))) %>% 116 | rename(NIVGEO = !!sym(NIVGEO_ANTE)) , 117 | by = c('NIVGEO',VAR_VENTIL ) ) %>% 118 | # #nombre de sorties 119 | left_join( TABLE %>% 120 | filter(!!sym(NIVGEO_ACTU) != !!sym(NIVGEO_ANTE) ) %>% 121 | group_by(!!sym(NIVGEO_ACTU),!!sym(VAR_VENTIL)) %>% 122 | summarise(nb_ind_ENTR = sum(!!sym(VAR_NB))) %>% 123 | rename(NIVGEO = !!sym(NIVGEO_ACTU)) , 124 | by = c('NIVGEO',VAR_VENTIL ) ) %>% 125 | # valeur à 0 si NA 126 | mutate_if(is.numeric, funs(ifelse(is.na(.), 0, .))) %>% 127 | #solde migratoire 128 | mutate(SM =nb_ind_ENTR - nb_ind_SORT ) %>% 129 | # # population résidente 130 | mutate(nb_ind_PRES = nb_ind_ISO + nb_ind_ENTR) %>% 131 | # population autochtone 132 | mutate(nb_ind_AUTO = nb_ind_ISO + nb_ind_SORT) %>% 133 | # indicateurs relatifs 134 | mutate(TM = (nb_ind_ENTR - nb_ind_SORT) / ((nb_ind_AUTO + nb_ind_PRES)/2) , 135 | PS = nb_ind_SORT / nb_ind_AUTO, 136 | PE = nb_ind_ENTR / nb_ind_PRES, 137 | TR = (nb_ind_ENTR + nb_ind_SORT) / ((nb_ind_AUTO + nb_ind_PRES)/2)) 138 | 139 | # renommer variable NIVGEO 140 | NIVGEO_indics_mig <- NIVGEO_indics_mig %>% rename(!!NIVGEO := NIVGEO) 141 | 142 | } 143 | } 144 | 145 | -------------------------------------------------------------------------------- /data-raw/fil_explications.R: -------------------------------------------------------------------------------- 1 | 2 | Principales fonctionnalités du package MOBIRESID 3 | 4 | # Charger le fichier détail 'Migrations résidentielles' du RP Insee 5 | 6 | # le télécharger depuis le site de l'Insee, le stocker dans un dossier en local puis le charger dans votre session R 7 | FD_MIGCOM_2014 <- charger_FD_MIGCOM(anneeRP = "2014", telechargement = TRUE, dossier_dest_TL = "./data") 8 | Le fichier détail "Migrations résidentielles" indique pour l'ensemble des résidents en France (une ligne par individu, chacun ayant un poids de pondération) 9 | sa commune de résidence actuelle, sa commune de résidence antérieure, ainsi qu'une vingtaine de variables précisant les caractéristiques socio-démographiques de cet 10 | individu (sexe, age, groupe socio-professionnel, etc...) 11 | 12 | Le fichier détail "Migrations résidentielles" est disponible pour le RP 2014 (résidence antérieure 1 an auparavant), le RP 2013 (idem), et le RP 2008 (résidence antérieure 5 ans auparavant), 13 | 14 | Attention les fichiers sont volumineux, vérifier que votre connexion internet est d'attaque. 15 | Si vous avez déjà le fichier détail stocké en local, il suffit alors d'indiquer son chemin pour le charger en session. 16 | FD_MIGCOM_2014 <- charger_FD_MIGCOM(chemin_FD = "C:/Users/mgarnier/Desktop/sauvegarde_temporaire/RP/FD_MIGCOM_2014.txt") 17 | 18 | # Ajouter des niveaux géographiques supra-communaux 19 | 20 | Pour jouer nos analyses à différentes échelles et optimiser nos temps de traitements par la suite, on ajoute dans le fichier détail "Migrations résidentielles" des mailles supra-communales à partir des 21 | champs indiquant la commune de résidence actuelle (champ 'COMMUNE') et la commune de résidence antérieure (champ 'DCRAN'). 22 | 23 | Ici, on précise que les niveaux supra-communaux ajoutés seront le département (code court 'DEP'), l'intercommunalité ('EPCI') et le type de densité d'après la grille communale de densité de l'Insee (TYPEDENS). 24 | La liste des niveaux supra-communaux disponibles est précisé dans la documentation de la fonction ajout_NIVGEO_SUPRACOMM. 25 | Le fichier détail utilisé ici étant issu du RP 2014 de l'Insee, les codes communes sont en géographie N+2 soit dans le Code Officiel Géographique 2016. 26 | On précise également que les niveaux supra-communaux ajoutés seront en COG 2018, et que les champs nouvellement crées seront suffixés avec le terme 'ANTE' pour les niveaux supracommunaux relatifs à la résidence antérieure 27 | et 'ACTU' pour la résidence actuelle. 28 | 29 | 30 | FD_MIGCOM_2014 <- 31 | ajout_NIVGEO_SUPRACOMM(TABLE = FD_MIGCOM_2014 , 32 | CODE_COMMUNE = "DCRAN", 33 | SUFFIXE = "ANTE", 34 | NIVGEO= c("DEP",'EPCI','TYPEDENS'), 35 | COG_IN = 2016, COG_NIVGEO = 2018) %>% 36 | ajout_NIVGEO_SUPRACOMM(TABLE = . , 37 | CODE_COMMUNE = "COMMUNE", 38 | SUFFIXE = "ACTU", 39 | NIVGEO= c("DEP",'EPCI','TYPEDENS'), 40 | COG_IN = 2016, COG_NIVGEO = 2018) 41 | 42 | 43 | # Calculer le volume de migrations résidentielles entre zones 44 | 45 | A partir du fichier détail (une ligne pour chaque individu), on souhaite connaitre le nombre d'individus ayant migré d'un territoire (résidence antérieure) à un autre territoire (résidence actuelle). 46 | #La fonction calcul_flux_migres génère une table contenant le niveau géographique antérieur, le niveau géographique actuel ainsi que le nombre d'individus ayant migré de l'un à l'autre. 47 | 48 | #Si une variable de ventilation de la population est précisée (sexe, tranche d'âge, groupe socio-professionnel, etc...), un nouveau champ précisant cette information sera ajoutée à la table en sortie 49 | 50 | flux_migres_DEP <- 51 | calcul_flux_migres(TABLE =FD_MIGCOM_2014 , 52 | VAR_NB = "IPONDI", 53 | MIG_NET_INTERNE=TRUE, 54 | NIVGEO_ANTE ="DEP_ANTE", 55 | NIVGEO_ACTU ="DEP_ACTU") 56 | 57 | #pour calculer le nombre d'individus de chaque groupe socio-professionnel ayant migré entre régions, on pourra executer ce qui suit : 58 | flux_migres_REG_CS1 <- 59 | calcul_flux_migres(TABLE =FD_MIGCOM_2014 , 60 | VAR_NB = "IPONDI", 61 | MIG_NET_INTERNE=TRUE, 62 | VAR_VENTIL = "CS1", 63 | NIVGEO_ANTE ="REG_ANTE", 64 | NIVGEO_ACTU ="REG_ACTU") 65 | 66 | 67 | # Calculer les indicateurs relatifs aux migrations pour chaque territoire 68 | 69 | A partir d'une table de comptage de migrations entre territoires de résidence antérieure et territoires de résidence actuelle, la fonction calcul_indics_migres 70 | génère une nouvelle table contenant les indicateurs relatifs à chaque territoire : 71 | #' \item{Population présente ('nb_ind_PRES')} 72 | #' \item{Population autochtone ('nb_ind_AUTO')} 73 | #' \item{Population stable ('nb_ind_ISO')} 74 | #' \item{Population entrante ('nb_ind_ENTR')} 75 | #' \item{Population sortante ('nb_ind_SORT')} 76 | #' \item{Solde migratoire ('SM')} 77 | #' \item{Taux de migration nette interne ('TM')} 78 | #' \item{Taux de rotation nette interne ('TR')} 79 | #' \item{Part d'entrants ('PE')} 80 | #' \item{Part de sortants('PS')} 81 | 82 | #Si une variable de ventilation de la population est précisée (sexe, tranche d'âge, groupe socio-professionnel, etc...), les indicateurs seront calculés pour chacun des groupes de population dans chaque territoire. 83 | 84 | 85 | indics_migres_DEP <- 86 | calcul_indics_migres(TABLE =flux_migres_DEP, 87 | VAR_NB = "nb_ind", 88 | #VAR_VENTIL = "CS1", 89 | NIVGEO ="DEP", 90 | NIVGEO_ACTU ="DEP_ACTU", 91 | NIVGEO_ANTE ="DEP_ANTE") 92 | 93 | 94 | indics_migres_REG_CS1 <- 95 | calcul_indics_migres(TABLE =flux_migres_REG_CS1, 96 | VAR_NB = "nb_ind", 97 | VAR_VENTIL = "CS1", 98 | NIVGEO ="REG", 99 | NIVGEO_ACTU ="REG_ACTU", 100 | NIVGEO_ANTE ="REG_ANTE") 101 | 102 | 103 | ### ajout libelles NIVGEO 104 | 105 | 106 | pour rendre les tables plus facilement intelligible, la fonction ajout_libelles_NIVGEO ajoute le libellé des zones géographiques (communales ou supra-communales) à partir de leur code. 107 | 108 | On peut ainsi créer un nouveau champ contenant le nom des régions administratives à partir de leur code. 109 | Le millésime du COG à indiquer est celui d 110 | 111 | indics_migres_REG_CS1 <- 112 | ajout_libelles_NIVGEO(TABLE = indics_migres_REG_CS1, 113 | NIVGEO_IN ="REG", 114 | COG_NIVGEO = 2018) 115 | 116 | flux_migres_EPCI <- 117 | ajout_libelles_NIVGEO(TABLE = flux_migres_EPCI, 118 | NIVGEO_IN ="EPCI_ANTE", 119 | NIVGEO_OUT ="EPCI", 120 | LIBGEO_OUT = "LIB_EPCI_ANTE", 121 | COG_NIVGEO = 2018) %>% 122 | ajout_libelles_NIVGEO(TABLE = ., 123 | NIVGEO_IN ="EPCI_ACTU", 124 | NIVGEO_OUT ="EPCI", 125 | LIBGEO = "LIB_EPCI_ACTU", 126 | COG_NIVGEO = 2018) 127 | 128 | 129 | ## ajout libellés VAR_VENTIL 130 | 131 | 132 | indics_migres_REG_CS1 <- 133 | ajout_libelles_VARVENTIL_INSEE(TABLE = indics_migres_REG_CS1, 134 | VAR ="CS1", 135 | MILLESIME_RP = 2014) 136 | 137 | 138 | # Calcul du nombre de migrations entre résidence actuelle et résidence antérieure au niveau départemental 139 | indics_migres_REG_CS1_RENOUV <- 140 | calcul_indics_renouv(TABLE = indics_migres_REG_CS1, 141 | NIVGEO = "REG", 142 | NB_ENTR = "nb_ind_ENTR", 143 | NB_SORT = "nb_ind_SORT", 144 | NB_AUTO = "nb_ind_AUTO", 145 | NB_PRES = "nb_ind_PRES", 146 | VAR_VENTIL ="CS1") 147 | 148 | -------------------------------------------------------------------------------- /docs/reference/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Function reference • migR 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 44 | 45 | 46 | 47 | 48 | 49 |
    50 |
    51 | 105 | 106 | 107 |
    108 | 109 |
    110 |
    111 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 129 | 130 | 131 | 132 | 135 | 136 | 137 | 138 | 141 | 142 | 143 | 144 | 147 | 148 | 149 | 150 | 153 | 154 | 155 | 156 | 159 | 160 | 161 | 162 | 165 | 166 | 167 | 168 | 171 | 172 | 173 | 174 | 177 | 178 | 179 | 180 | 183 | 184 | 185 | 186 | 189 | 190 | 191 | 192 |
    126 |

    All functions

    127 |

    128 |
    133 |

    ajout_nivgeo_supracomm()

    134 |

    Ajouter un champ contenant un niveau géographique supra-communal

    139 |

    creation_carto_supracomm()

    140 |

    Générer la cartographie d'un maillage supracommunal

    145 |

    chargement_fd_migcom()

    146 |

    Charger un fichier détail MIGCOM de l'Insee

    151 |

    ajout_libelles_nivgeo()

    152 |

    Ajouter le libellé d'une unité géographique

    157 |

    calcul_indics_histodemo()

    158 |

    Calculer les indicateurs d'évolution démographique depuis 1968

    163 |

    calcul_flux_migres()

    164 |

    Calculer le volume de migrations résidentielles entre zones

    169 |

    ajout_libelles_varventil_insee()

    170 |

    Ajouter le libellé d'une modalité de variable de ventilation

    175 |

    calcul_indics_migres()

    176 |

    Calculer les indicateurs relatifs aux migrations résidentielles pour chaque zone.

    181 |

    chargement_bd_histodemo()

    182 |

    Charger une base de données de séries historiques de population de l'Insee

    187 |

    calcul_indics_renouv()

    188 |

    Calculer les indicateurs de catégorisation et de renouvellement de la population par les migrations

    193 |
    194 | 195 | 201 |
    202 | 203 |
    204 | 207 | 208 |
    209 |

    Site built with pkgdown.

    210 |
    211 | 212 |
    213 |
    214 | 215 | 216 | 217 | 218 | 219 | 220 | -------------------------------------------------------------------------------- /R/ajout_nivgeo_supracomm.R: -------------------------------------------------------------------------------- 1 | #' @name ajout_nivgeo_supracomm 2 | #' 3 | #' @title Ajouter un champ contenant un niveau géographique supra-communal 4 | #' 5 | #' @description Dans une table contenant un code commune Insee (avec ou sans arrondissements pour Paris, Lyon et Marseille), accoler à cette table un nouveau champ contenant le niveau supra-communal correspondant à cette commune. 6 | #' 7 | #' @param TABLE Table en entrée disposant a minima d'un champ de codes commune Insee. 8 | #' @param CODE_COMMUNE Nom du champ de la table en entrée contenant le code commune Insee. Il peut contenir des codes arrondissements pour Paris, Lyon et Marseille (75101, 75102, etc...) ou non ('75056') 9 | #' @param SUFFIXE Terme à ajouter en suffixe au nom du champ de niveau supra-communal ajouté à la table (facultatif). 10 | #' @param COG_IN Millésime du Code Officiel Géographique du code commune en entrée (liste : cf. details ci-dessous). Le millésime du COG est indiqué dans les métadonnées des fichiers Insee, dans le fichier du RP d'année N il est généralement égal à N-2. 11 | #' @param COG_NIVGEO Millésime du Code Officiel Géographique du code supra-communal en sortie (liste : cf. details ci-dessous). 12 | #' @param NIVGEO Nom du niveau géographique supra-communal à ajouter (en format court, liste : cf. details ci-dessous). Peut être un vecteur contenant les noms de plusieurs niveaux. 13 | #' 14 | #' @return Renvoie une table avec un champ supplémentaire contenant le niveau géographique supra-communal. 15 | #' 16 | #' @importFrom dplyr distinct pull mutate select left_join case_when 17 | #' @importFrom rlang sym 18 | #' @import COGugaison 19 | #' @importFrom magrittr set_colnames 20 | #' 21 | #' @examples 22 | #' \dontrun{ 23 | #' # Ajout du champ 'DEP' indiquant le niveau géographique "département" à une table ayant une information communale 24 | #' COM_2012 <- 25 | #' ajout_nivgeo_supracomm(TABLE = COM_2012 , 26 | #' CODE_COMMUNE = "CODGEO", 27 | #' NIVGEO = "DEP", 28 | #' COG_IN = 2010, 29 | #' COG_NIVGEO = 2019) 30 | #' 31 | #' # Ajout des niveaux géographiques "département", "région" et "type de densité" depuis les champs "commune de résidence actuelle" et "commune de résidence antérieure" 32 | #' FD_MIGCOM_2016 <- FD_MIGCOM_2016 33 | #' ajout_nivgeo_supracomm(TABLE = . , 34 | #' CODE_COMMUNE = "DCRAN", 35 | #' SUFFIXE = "ANTE", 36 | #' NIVGEO= c("DEP",'EPCI','TYPEDENS'), 37 | #' COG_IN = 2018, COG_NIVGEO = 2019) %>% 38 | #' ajout_nivgeo_supracomm(TABLE = . , 39 | #' CODE_COMMUNE = "COMMUNE", 40 | #' SUFFIXE = "ACTU", 41 | #' NIVGEO= c("DEP",'EPCI','TYPEDENS'), 42 | #' COG_IN = 2018, COG_NIVGEO = 2019) 43 | #'} 44 | #' 45 | #' @details 46 | #' Les millésimes du COG disponibles sont les suivants : 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019. \cr 47 | #' 48 | #' Pour convertir un code commune d'un COG plus ancien, il est conseillé d'effectuer l'opération grâce au package 'COGugaison'. \cr 49 | #' 50 | #' Les niveaux supra-communaux disponibles sont les suivants : 51 | #' \itemize{ 52 | #' \item{Département ('DEP')} 53 | #' \item{Région administrative ('REG')} 54 | #' \item{Établissement public de coopération intercommunale ('EPCI')} 55 | #' \item{Nature d'Établissement public de coopération intercommunale ('NATURE_EPCI')} 56 | #' \item{Arrondissement ('ARR')} 57 | #' \item{Canton-ou-ville ('CV')} 58 | #' \item{Zone d'emploi ('ZE2010')} 59 | #' \item{Unité Urbaine ('UU2010')} 60 | #' \item{Tranche d'Unité Urbaine ('TUU2015')} 61 | #' \item{Tranche détaillée d'Unité Urbaine ('TDUU2015')} 62 | #' \item{Aire Urbaine ('AU2010')} 63 | #' \item{Tranche d'aire urbaine ('TAU2015')} 64 | #' \item{Zonage en Aires Urbaines ('CATAEU2010')} 65 | #' \item{Bassin de vie ('BV2012')} 66 | #' \item{Type de densité selon la grille de densité communale ('TYPEDENS')}} 67 | #' 68 | #' @references 69 | #' \itemize{ 70 | #' \item{\href{https://antuki.github.io/COGugaison/articles/COGugaison.html}{Package 'COGugaison' pour gérer les changements de COG}} 71 | #' \item{\href{https://www.insee.fr/fr/information/2666684#titre-bloc-11}{Historique des géographies communales (Insee)}} 72 | #' \item{\href{https://www.insee.fr/fr/information/2028028}{Tables d'appartenance des communes aux différents niveaux géographiques (Insee)}}} 73 | #' 74 | #' @export 75 | #' 76 | 77 | 78 | ajout_nivgeo_supracomm <- function (TABLE, CODE_COMMUNE, SUFFIXE='', COG_IN, COG_NIVGEO, NIVGEO){ 79 | 80 | # tester si le champ CODE_COMMUNE contient des arrondissements PLM 81 | test_ARRPLM_CODE_COMMUNE <- is.element( as.character(c(seq(from=13201, to=13216, by = 1), seq(from=69381, to=69389, by = 1), seq(from=75101, to=75120, by = 1))), TABLE %>% distinct(!!sym(CODE_COMMUNE)) %>% pull() ) 82 | 83 | # si le champ CODE_COMMUNE contient au moins 1 arrondissement PLM on normalise les codes communes sans arrondissements PLM 84 | if( is.element(TRUE, test_ARRPLM_CODE_COMMUNE) == TRUE ) { 85 | 86 | TABLE <- TABLE %>% mutate(!!sym(paste0(CODE_COMMUNE, "_sansARRPLM")) := !!sym(CODE_COMMUNE)) 87 | TABLE <- enlever_PLM(TABLE, codgeo_entree = paste0(CODE_COMMUNE, "_sansARRPLM"), libgeo = NULL, agregation = F) 88 | 89 | 90 | } 91 | # si le champ CODE_COMMUNE ne contient pas d'arrondissements PLM on conserve les champs tels quels 92 | 93 | else { 94 | TABLE <- TABLE %>% mutate(!!sym(paste0(CODE_COMMUNE, "_sansARRPLM")) := !!sym(CODE_COMMUNE)) 95 | } 96 | 97 | # conversion référentiel grille de densité communale #### 98 | #https://www.insee.fr/fr/information/2114627 99 | 100 | if(COG_IN == 2016) { 101 | COMM_GRIDENS_OK <- COMM_GRIDENS 102 | } 103 | else { 104 | COMM_GRIDENS_OK <- changement_COG_typo(table_entree=COMM_GRIDENS , 105 | annees=c(2016:COG_IN), 106 | methode_fusion="methode_max_pop",libgeo=F,donnees_insee=T) 107 | } 108 | 109 | #### création de la table de correspondance supra-communale #### 110 | # cas 1 : les COG d'entrée et de sortie sont identiques 111 | if(COG_IN == COG_NIVGEO) { 112 | 113 | # table de correspondance maillages supra comm 114 | table_supracom_OK <- get(paste0("table_supracom_", as.character(COG_IN))) %>% 115 | select(-LIBGEO) %>% 116 | # autres mailes supra-communales 117 | mutate(COMM = CODGEO, 118 | PAYS = "FRA", 119 | METRODOM = case_when(substr(CODGEO,1,2) %in% '97' ~ "DOM", TRUE ~ "METRO")) %>% 120 | left_join(COMM_GRIDENS_OK, by = c('CODGEO', "CODGEO")) 121 | 122 | 123 | } 124 | 125 | # cas 2 : les COG d'entrée et de sortie sont différents 126 | else { 127 | 128 | table_supracom_IN <- get(paste0("table_supracom_", as.character(COG_IN)) ) 129 | table_supracom_NIVGEO <- get(paste0("table_supracom_", as.character(COG_NIVGEO)) ) 130 | 131 | 132 | table_supracom_OK <- table_supracom_IN %>% select(CODGEO) %>% 133 | left_join( 134 | changement_COG_typo(table_entree=table_supracom_NIVGEO %>% select(-LIBGEO), 135 | annees=c(COG_NIVGEO:COG_IN), 136 | methode_fusion="methode_max_pop",libgeo=F,donnees_insee=T), 137 | by = "CODGEO") %>% 138 | # autres mailles supra-communales 139 | mutate(COMM = CODGEO, 140 | PAYS = "FRA", 141 | METRODOM = case_when(substr(CODGEO,1,2) %in% '97' ~ "DOM", TRUE ~ "METRO")) %>% 142 | left_join(COMM_GRIDENS_OK, by = c('CODGEO', "CODGEO")) 143 | 144 | } 145 | 146 | #### jointure du code supra-communal dans la table #### 147 | 148 | if(SUFFIXE == '') { 149 | TABLE_new <- TABLE %>% 150 | left_join(table_supracom_OK %>% 151 | select(CODGEO, NIVGEO) %>% 152 | set_colnames(c(paste0(CODE_COMMUNE, "_sansARRPLM"),NIVGEO)), 153 | by = paste0(CODE_COMMUNE, "_sansARRPLM") ) %>% 154 | select(-!!paste0(CODE_COMMUNE, "_sansARRPLM")) 155 | 156 | } 157 | else { 158 | TABLE_new <- TABLE %>% 159 | left_join(table_supracom_OK %>% 160 | select(CODGEO, NIVGEO) %>% 161 | set_colnames(c(paste0(CODE_COMMUNE, "_sansARRPLM"),paste0(NIVGEO,"_",SUFFIXE))), 162 | by = paste0(CODE_COMMUNE, "_sansARRPLM") ) %>% 163 | select(-!!paste0(CODE_COMMUNE, "_sansARRPLM")) 164 | } 165 | 166 | } 167 | 168 | -------------------------------------------------------------------------------- /R/creation_carto_supracomm.R: -------------------------------------------------------------------------------- 1 | #' @name creation_carto_supracomm 2 | #' 3 | #' @title Générer la cartographie d'un maillage supracommunal 4 | #' 5 | #' @description A partir d'un fichier cartographique des communes françaises (issu du produit AdminExpress (http://www.professionnels.ign.fr/adminexpress) de l'IGN par exemple), générer la cartographie correspondant à un maillage supracommunal (département, aire urbaine, etc...) sous forme de polygones ou de centroides. 6 | #' @title Ajouter le libellé d'une modalité de variable de ventilation 7 | #' 8 | #' @param CARTO_COMM Cartographie en entrée des communes françaises, format sf dataframe. 9 | #' @param CODE_COMMUNE Nom du champ contenant l'identifiant communal (de type caractère) de la table en entrée. 10 | #' @param COG_IN Millésime du Code Officiel Géographique des communes en entrée. 11 | #' @param COG_NIVGEO Millésime du Code Officiel Géographique du maillage supra-communal en sortie. 12 | #' @param NIVGEO Nom du code d'unité géographique à générer en sortie (en format court, liste : cf. details ci-dessous). 13 | #' @param FORMAT Format de la cartographie générée : polygones ("poly") ou centroides ("ctr"). 14 | #' @param SG Niveau de généralisation de la géometrie générée : pourcentage des sommets de la géométrie initiale conservés, 1 par défaut. 15 | #' 16 | #' 17 | #' @return Renvoie la cartographie du maillage supracommunal sous forme d'objet sf dataframe. 18 | #' 19 | #' @importFrom dplyr tribble distinct pull mutate select left_join case_when group_by summarise ungroup rename mutate_all bind_rows everything 20 | #' @importFrom rlang sym 21 | #' @importFrom rmapshaper ms_simplify 22 | #' @importFrom magrittr set_colnames 23 | #' @import COGugaison 24 | #' @import sf 25 | #' 26 | #' @examples 27 | #' \dontrun{ 28 | #' # Création de la cartographie des anciennes régions (millésime 2015) en format polygones avec géométrie généralisée 29 | #' geo_REG_poly <- 30 | #' creation_carto_supracomm(CARTO_COMM = COMMG_COG2016_METDOM, 31 | #' CODE_COMMUNE = "DEPCOM", 32 | #' COG_IN = 2016, 33 | #' COG_NIVGEO = 2015, 34 | #' NIVGEO = "REG", 35 | #' FORMAT = "poly", 36 | #' SG = 0.05) 37 | #' 38 | #'# Création de la cartographie des EPCI (millésime 2018) en format centroïdes 39 | #' geo_EPCI_ctr <- 40 | #' creation_carto_supracomm(CARTO_COMM = COMMG_COG2016_METDOM, 41 | #' CODE_COMMUNE = "DEPCOM", 42 | #' COG_IN = 2016, 43 | #' COG_NIVGEO = 2018, 44 | #' NIVGEO = "EPCI", 45 | #' FORMAT ="ctr", 46 | #' SG = 1) 47 | #'} 48 | #' 49 | #' @details 50 | #' La conversion entre les différents millésimes du COG est gérée grâce à la fonction 'changement_COG_typo' du package 'COGugaison' ; la méthode de fusion par défaut est 'methode_max_pop' (cf. aide "COGugaison"). 51 | #' 52 | #' Les millésimes du COG disponibles sont les suivants : 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019. \cr 53 | #' 54 | #' Les niveaux supra-communaux disponibles sont les suivants : 55 | #' \itemize{ 56 | #' \item{Département ('DEP')} 57 | #' \item{Région administrative ('REG')} 58 | #' \item{Établissement public de coopération intercommunale ('EPCI')} 59 | #' \item{Arrondissement ('ARR')} 60 | #' \item{Canton-ou-ville ('CV')} 61 | #' \item{Zone d'emploi ('ZE2010')} 62 | #' \item{Unité Urbaine ('UU2010')} 63 | #' \item{Aire Urbaine ('AU2010')} 64 | #' \item{Zonage en Aires Urbaines ('CATAEU2010')} 65 | #' \item{Bassin de vie ('BV2012')} 66 | #' \item{Type de densité selon la grille de densité communale ('TYPEDENS')}} 67 | #' 68 | #' @export 69 | #' 70 | 71 | 72 | creation_carto_supracomm <- function(CARTO_COMM,CODE_COMMUNE,COG_IN,COG_NIVGEO,NIVGEO,FORMAT="poly",SG=1) { 73 | 74 | # format sf dataframe 75 | class(CARTO_COMM) = c("sf","data.frame") 76 | 77 | # 1 - gestion des arrondissements PLM #### 78 | 79 | # tester si le champ CODE_COMMUNE contient des arrondissements PLM 80 | test_ARRPLM_CODE_COMMUNE <- is.element( as.character(c(seq(from=13201, to=13216, by = 1), seq(from=69381, to=69389, by = 1), seq(from=75101, to=75120, by = 1))), CARTO_COMM %>% as.data.frame() %>% distinct(!!sym(CODE_COMMUNE)) %>% pull() ) 81 | 82 | # si le champ CODE_COMMUNE contient au moins 1 arrondissement PLM on normalise les codes communes sans arrondissements PLM 83 | if( is.element(TRUE, test_ARRPLM_CODE_COMMUNE) == TRUE ) { 84 | 85 | CARTO_COMM <- CARTO_COMM %>% mutate(!!sym(paste0(CODE_COMMUNE, "_sansARRPLM")) := !!sym(CODE_COMMUNE)) 86 | CARTO_COMM <- enlever_PLM(CARTO_COMM, codgeo_entree = paste0(CODE_COMMUNE, "_sansARRPLM"), libgeo = NULL, agregation = F) 87 | 88 | } 89 | # si le champ CODE_COMMUNE ne contient pas d'arrondissements PLM on conserve les champs tels quels 90 | 91 | else { 92 | CARTO_COMM <- CARTO_COMM %>% mutate(!!sym(paste0(CODE_COMMUNE, "_sansARRPLM")) := !!sym(CODE_COMMUNE)) 93 | } 94 | 95 | # 2 - table supra communale #### 96 | 97 | # conversion référentiel grille de densité communale #### 98 | #https://www.insee.fr/fr/information/2114627 99 | 100 | if(COG_IN == 2016) { 101 | COMM_GRIDENS_OK <- COMM_GRIDENS %>% as.data.frame() 102 | } 103 | else { 104 | COMM_GRIDENS_OK <- changement_COG_typo(table_entree=COMM_GRIDENS %>% as.data.frame() , 105 | annees=c(2016:COG_IN), 106 | methode_fusion="methode_max_pop", 107 | libgeo=F, 108 | donnees_insee=T) 109 | } 110 | 111 | #### création de la table de correspondance supra-communale #### 112 | # cas 1 : les COG d'entrée et de sortie sont identiques 113 | if(COG_IN == COG_NIVGEO) { 114 | 115 | # table de correspondance maillages supra comm 116 | table_supracom_OK <- get(paste0("table_supracom_", as.character(COG_IN))) %>% 117 | select(-LIBGEO) %>% 118 | # autres mailes supra-communales 119 | mutate(COMM = CODGEO, 120 | PAYS = "FRA", 121 | METRODOM = case_when(substr(CODGEO,1,2) %in% '97' ~ "DOM", TRUE ~ "METRO")) %>% 122 | left_join(COMM_GRIDENS_OK, by = c('CODGEO', "CODGEO")) 123 | 124 | } 125 | 126 | # cas 2 : les COG d'entrée et de sortie sont différents 127 | else { 128 | 129 | table_supracom_IN <- get(paste0("table_supracom_", as.character(COG_IN)) ) 130 | table_supracom_NIVGEO <- get(paste0("table_supracom_", as.character(COG_NIVGEO)) ) 131 | 132 | table_supracom_OK <- table_supracom_IN %>% select(CODGEO) %>% 133 | left_join( 134 | changement_COG_typo(table_entree=table_supracom_NIVGEO %>% select(-LIBGEO), 135 | annees=c(COG_NIVGEO:COG_IN), 136 | methode_fusion="methode_max_pop",libgeo=F,donnees_insee=T), 137 | by = "CODGEO") %>% 138 | # autres mailles supra-communales 139 | mutate(COMM = CODGEO, 140 | PAYS = "FRA", 141 | METRODOM = case_when(substr(CODGEO,1,2) %in% '97' ~ "DOM", TRUE ~ "METRO")) %>% 142 | left_join(COMM_GRIDENS_OK, by = c('CODGEO', "CODGEO")) 143 | 144 | } 145 | 146 | #### jointure du code supra-communal dans la couche communale 147 | 148 | CARTO_COMM_new <- CARTO_COMM %>% 149 | left_join(table_supracom_OK %>% 150 | select(CODGEO, NIVGEO) %>% 151 | set_colnames(c(paste0(CODE_COMMUNE, "_sansARRPLM"),NIVGEO)), 152 | by = paste0(CODE_COMMUNE, "_sansARRPLM") ) %>% 153 | select(-!!paste0(CODE_COMMUNE, "_sansARRPLM")) 154 | 155 | # aggrégation de la table supra-comm 156 | NIVGEO_geo <- CARTO_COMM_new %>% dplyr::select(!!rlang::sym(NIVGEO)) %>% dplyr::group_by(!!rlang::sym(NIVGEO)) %>% dplyr::summarize() 157 | 158 | # sortie sous format polygones ou centroides 159 | 160 | if(FORMAT %in% "poly") { 161 | # simplification des geometries 162 | NIVGEO_geo.s <- ms_simplify(input = as(NIVGEO_geo, 'Spatial'), keep = SG) %>% st_as_sf() %>% ungroup() 163 | out <- NIVGEO_geo.s %>% st_set_crs(st_crs(CARTO_COMM)) 164 | } 165 | 166 | else if(FORMAT %in% "ctr") { 167 | # centroides 168 | NIVGEO_geo.ctr <- NIVGEO_geo %>% st_centroid( of_largest_polygon = F) %>% 169 | mutate(x_ctr = map_dbl(geometry, ~st_centroid(.x)[[1]]), 170 | y_ctr = map_dbl(geometry, ~st_centroid(.x)[[2]])) 171 | 172 | out <- NIVGEO_geo.ctr %>% st_set_crs(st_crs(CARTO_COMM)) 173 | } 174 | 175 | # sortie 176 | out 177 | 178 | } 179 | 180 | 181 | -------------------------------------------------------------------------------- /docs/reference/chargement_bd_histodemo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Charger une base de données de séries historiques de population de l'Insee — chargement_bd_histodemo • migR 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 47 | 48 | 49 | 50 | 51 | 52 |
    53 |
    54 | 108 | 109 | 110 |
    111 | 112 |
    113 |
    114 | 119 | 120 |
    121 | 122 |

    Télécharger la base de données "séries historiques" contenant les informations de démographique par période intercensitaire depuis 1968 depuis le site de l'Insee puis le monter en mémoire, ou uniquement la charger si le fichier xls est disponible en local.

    123 | 124 |
    125 | 126 |
    chargement_bd_histodemo(telechargement = FALSE, dossier_dest_TL,
    127 |   chemin_FD)
    128 | 129 |

    Arguments

    130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 |
    telechargement

    Vaut TRUE si le fichier doit être téléchargé depuis le site internet de l'Insee, FALSE si le fichier xls est disponible en local.

    dossier_dest_TL

    Dossier de destination où va être stockée l'archive zip et le fichier xls dézippé. S'il n'existe pas, il sera créé. Non renseigné si telechargement vaut FALSE.

    chemin_FD

    Lien vers le fichier xls (base-cc-serie-historique-AAAA.xls) en local. Non renseigné si telechargement vaut TRUE.

    145 | 146 |

    Value

    147 | 148 |

    Retourne une table communale contenant les informations de population/naissances/décès par période inter-censitaire depuis 1968.

    149 | 150 | 151 |

    Examples

    152 |
    # NOT RUN {
    153 | # Téléchargement du fichier "séries historiques" du dernier RP en date depuis le site internet de l'Insee dans le dossier "./data"
    154 | COMM_HISTODEMO_2015 <- chargement_bd_histodemo(telechargement = TRUE, dossier_dest_TL = "./data")
    155 | 
    156 | # Chargement du fichier xls "séries historiques" disponible en local
    157 | COMM_HISTODEMO_2015 <- chargement_bd_histodemo(chemin_FD = "./data/base-cc-serie-historique-2015/base-cc-serie-historique-2015.xls")
    158 | # }
    159 |
    160 |
    161 | 172 |
    173 | 174 |
    175 | 178 | 179 |
    180 |

    Site built with pkgdown.

    181 |
    182 | 183 |
    184 |
    185 | 186 | 187 | 188 | 189 | 190 | 191 | -------------------------------------------------------------------------------- /docs/reference/chargement_fd_migcom.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Charger un fichier détail MIGCOM de l'Insee — chargement_fd_migcom • migR 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 47 | 48 | 49 | 50 | 51 | 52 |
    53 |
    54 | 108 | 109 | 110 |
    111 | 112 |
    113 |
    114 | 119 | 120 |
    121 | 122 |

    Télécharger un fichier détail MIGCOM (Migrations résidentielles entre commune de résidence et commune de résidence antérieure) depuis le site de l'Insee puis le monter en mémoire, ou uniquement le charger si le fichier txt est disponible en local.

    123 | 124 |
    125 | 126 |
    chargement_fd_migcom(telechargement = FALSE, monet = TRUE, anneeRP,
    127 |   dossier_dest_TL, chemin_FD)
    128 | 129 |

    Arguments

    130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 |
    telechargement

    Vaut TRUE si le fichier doit être téléchargé depuis le site internet de l'Insee, FALSE si le fichier txt est disponible en local.

    monet

    Vaut TRUE si le fichier détail doit être importé dans une base de données `MonetDBLite`, FALSE s'il doit être importé en mémoire vive.

    anneeRP

    Millésime du recensement de la population (RP) de l'Insee. Peut prendre les valeurs "2008", "2013", "2014" ou "2015". Non renseigné si telechargement vaut TRUE.

    dossier_dest_TL

    Dossier de destination où va être stockée l'archive zip et les fichiers txt dézippés. S'il n'existe pas, il sera créé. Non renseigné si telechargement vaut FALSE.

    chemin_FD

    Lien vers le fichier txt (FD_MIGCOM) en local. Non renseigné si telechargement vaut TRUE.

    153 | 154 |

    Value

    155 | 156 |

    Retourne une table de détail des migrations résidentielles avec pour chaque individu sa commune de résidence actuelle et commune de résidence antérieure.

    157 | 158 | 159 |

    Examples

    160 |
    # NOT RUN {
    161 | # Téléchargement du fichier MIGCOM du dernier RP en date depuis le site internet de l'Insee dans le dossier "./data"
    162 | FD_MIGCOM_2015 <- chargement_fd_migcom(anneeRP = "2015",  telechargement = TRUE, dossier_dest_TL = "./data")
    163 | 
    164 | # Chargement du fichier txt MIGCOM disponible en local
    165 | FD_MIGCOM_2015 <- chargement_fd_migcom(chemin_FD = "./data/rp2015_migcom_txt/FD_MIGCOM_2015.txt")
    166 | # }
    167 |
    168 |
    169 | 180 |
    181 | 182 |
    183 | 186 | 187 |
    188 |

    Site built with pkgdown.

    189 |
    190 | 191 |
    192 |
    193 | 194 | 195 | 196 | 197 | 198 | 199 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Analyse territoriale des migrations résidentielles internes • migR 9 | 10 | 11 | 12 | 13 | 14 | 15 | 19 | 20 | 21 |
    22 |
    76 | 77 | 78 | 79 |
    80 |
    81 | 82 | 83 | 84 | 85 | 86 |
    87 | 90 |
    91 |
    92 |

    93 | Analyse des migrations résidentielles

    94 |

    L’objectif du package migR est de faciliter l’exploitation des fichiers du recensement de l’Insee décrivant les migrations résidentielles. Il propose également des indicateurs quantifiant les échanges entre territoires à plusieurs échelles géographiques, ainsi que des indicateurs caractérisant l’impact des migrations dans la composition socio-démographique des territoires. Le package migR a été réalisé dans le cadre de la rédaction du rapport de l’Observatoire des Territoires portant sur les migrations résidentielles.

    95 |
    96 |

    97 | Installation

    98 |

    Le package migR peut être installé avec la commande suivante :

    99 |
    library(devtools)
    100 | devtools::install_github("observatoire-territoires/migR")
    101 | library(migR)
    102 |
    103 |
    104 |

    105 | Documentation

    106 |

    Deux articles sont en ligne :

    107 |
      108 |
    • une note méthodologique présentant les concepts nécessaires à l’étude des migrations résidentielles.
    • 109 |
    • un tutoriel détaillant les fonctions du package.
    • 110 |
    111 |

    La principale source statistique utilisée est le fichier détail de l’Insee décrivant les mobilités résidentielles. Les packages COGugaison pour la gestion des géographies et Insee2MonetDB pour le chargement des données ont particulièrement été mis à contribution.

    112 |
    113 |

    114 | Contact

    115 |

    Des questions ? Des commentaires sur le package migR ou sur le rapport ? Boite contact de l’Observatoire des Territoires!

    116 |

    Il est également possible de contribuer au package migR via une PR ou remonter un problème en ouvrant une issue.

    117 |
    118 |
    119 |
    120 |
    121 | 122 | 147 | 148 |
    149 | 150 | 151 |
    154 | 155 |
    156 |

    Site built with pkgdown.

    157 |
    158 | 159 |
    160 |
    161 | 162 | 163 | 164 | 165 | 166 | -------------------------------------------------------------------------------- /R/calcul_indics_histodemo.R: -------------------------------------------------------------------------------- 1 | #' @name calcul_indics_histodemo 2 | #' 3 | #' @title Calculer les indicateurs d'évolution démographique depuis 1968 4 | #' 5 | #' @description A partir de la base de données "séries historiques", calculer les indicateurs d'évolution démographique (évolution de la population, solde naturel, solde migratoire apparent...) par période intercensitaire et à la maille communale ou supra-communale souhaitée. 6 | #' 7 | #' @param TABLE Table en entrée générée par la fonction 'chargement_bd_histodemo'. 8 | #' @param anneeRP Millésime du Recensement de la Population de l'Insee correspondant à la table (2016 par défaut). 9 | #' @param NIVGEO Nom du niveau géographique supra-communal à ajouter (en format court, liste : cf. details ci-dessous). 10 | #' @param COG_NIVGEO Millésime du Code Officiel Géographique du code supra-communal en sortie (liste : cf. details ci-dessous). 11 | #' 12 | #' @return Renvoie une table contenant les indicateurs d'évolution démographique par territoire et par période intercensitaire. 13 | #' 14 | #' @importFrom dplyr distinct pull mutate select left_join case_when group_by summarise ungroup rename mutate_if vars funs 15 | #' @importFrom rlang sym 16 | #' @importFrom tidyr spread gather 17 | #' @import COGugaison 18 | #' @importFrom magrittr set_colnames 19 | #' 20 | #' @examples 21 | #' \dontrun{ 22 | #' # Calculer les indicateurs d'évolution démographique par période entre 1968 et 2016, à la maille département 23 | #' DEP_histodemo_19682016 <- calcul_indics_histodemo(TABLE = COMM_HISTODEMO_2016, anneeRP = 2016, NIVGEO = "DEP",COG_NIVGEO = 2019) 24 | #' } 25 | #' 26 | #' @details 27 | #' 28 | #' Les champs de la table en sortie sont les suivants : 29 | #' \itemize{ 30 | #' \item{'periode' : période intercensitaire concernée, format "AAAA_AAAA"} 31 | #' \item{'periode_milieu' : milieu de la période intercensitaire concernée, format numérique} 32 | #' \item{'periode_nb_annees' : nombre d'années de la période intercensitaire concernée} 33 | #' \item{'POPULATION_debut' : Population en début de période} 34 | #' \item{'POPULATION_fin' : Population en fin de période} 35 | #' \item{'DECES' : Nombre de décès au cours de la période} 36 | #' \item{'NAISSANCES' : Nombre de naissances au cours de la période} 37 | #' \item{'EVOL_DEMO_TOT' : Evolution démographique au cours de la période} 38 | #' \item{'EVOL_DEMO_SN' : Evolution démographique due au solde naturel au cours de la période} 39 | #' \item{'EVOL_DEMO_SMA' : Evolution démographique due au solde migratoire apparent au cours de la période} 40 | #' \item{'TX_EVOL_DEMO_AN_TOT' : Taux annuel d'évolution démographique au cours de la période} 41 | #' \item{'TX_EVOL_DEMO_AN_SN' : Taux annuel d'évolution démographique due au solde naturel au cours de la période} 42 | #' \item{'TX_EVOL_DEMO_AN_SMA' : Taux annuel d'évolution démographique due au solde migratoire apparent au cours de la période}} 43 | #' 44 | #' 45 | #' Les millésimes du COG disponibles sont les suivants : 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019. \cr 46 | #' 47 | #' Pour convertir un code commune d'un COG plus ancien, il est conseillé d'effectuer l'opération grâce au package 'COGugaison'. \cr 48 | #' 49 | #' Les niveaux supra-communaux disponibles sont les suivants : 50 | #' \itemize{ 51 | #' \item{Commune ('COMM')} 52 | #' \item{Département ('DEP')} 53 | #' \item{Région administrative ('REG')} 54 | #' \item{Établissement public de coopération intercommunale ('EPCI')} 55 | #' \item{Nature d'Établissement public de coopération intercommunale ('NATURE_EPCI')} 56 | #' \item{Arrondissement ('ARR')} 57 | #' \item{Canton-ou-ville ('CV')} 58 | #' \item{Zone d'emploi ('ZE2010')} 59 | #' \item{Unité Urbaine ('UU2010')} 60 | #' \item{Tranche d'Unité Urbaine ('TUU2015')} 61 | #' \item{Tranche détaillée d'Unité Urbaine ('TDUU2015')} 62 | #' \item{Aire Urbaine ('AU2010')} 63 | #' \item{Tranche d'aire urbaine ('TAU2015')} 64 | #' \item{Zonage en Aires Urbaines ('CATAEU2010')} 65 | #' \item{Bassin de vie ('BV2012')} 66 | #' \item{Type de densité selon la grille de densité communale ('TYPEDENS')}} 67 | #' 68 | #' @references 69 | #' \itemize{ 70 | #' \item{\href{https://antuki.github.io/COGugaison/articles/COGugaison.html}{Package 'COGugaison' pour gérer les changements de COG}} 71 | #' \item{\href{https://www.insee.fr/fr/information/2666684#titre-bloc-11}{Historique des géographies communales (Insee)}} 72 | #' \item{\href{https://www.insee.fr/fr/information/2028028}{Tables d'appartenance des communes aux différents niveaux géographiques (Insee)}}} 73 | #' 74 | #' @export 75 | #' 76 | 77 | 78 | calcul_indics_histodemo <- function(TABLE, anneeRP =2016, NIVGEO, COG_NIVGEO) { 79 | 80 | # définition du COG du fichier en entrée 81 | COG_IN <- anneeRP + 3 82 | 83 | 84 | if(COG_IN == 2016) { 85 | COMM_GRIDENS_OK <- COMM_GRIDENS 86 | } 87 | else{ 88 | COMM_GRIDENS_OK <- changement_COG_typo(table_entree=COMM_GRIDENS , 89 | annees=c(2016:COG_IN), 90 | methode_fusion="methode_max_pop",libgeo=F,donnees_insee=T) 91 | } 92 | 93 | #### création de la table de correspondance supra-communale #### 94 | # cas 1 : les COG d'entrée et de sortie sont identiques 95 | if(COG_IN == COG_NIVGEO) { 96 | 97 | # table de correspondance maillages supra comm 98 | table_supracom_OK <- get(paste0("table_supracom_", as.character(COG_IN))) %>% 99 | select(-LIBGEO) %>% 100 | # autres mailes supra-communales 101 | mutate(COMM = CODGEO, 102 | PAYS = "FRA", 103 | METRODOM = case_when(substr(CODGEO,1,2) %in% '97' ~ "DOM", TRUE ~ "METRO")) %>% 104 | left_join(COMM_GRIDENS_OK, by = c('CODGEO', "CODGEO")) 105 | 106 | 107 | } 108 | 109 | # cas 2 : les COG d'entrée et de sortie sont différents 110 | else { 111 | 112 | table_supracom_IN <- get(paste0("table_supracom_", as.character(COG_IN)) ) 113 | table_supracom_NIVGEO <- get(paste0("table_supracom_", as.character(COG_NIVGEO)) ) 114 | 115 | 116 | table_supracom_OK <- table_supracom_IN %>% select(CODGEO) %>% 117 | left_join( 118 | changement_COG_typo(table_entree=table_supracom_NIVGEO %>% select(-LIBGEO), 119 | annees=c(COG_NIVGEO:COG_IN), 120 | methode_fusion="methode_max_pop",libgeo=F,donnees_insee=T), 121 | by = "CODGEO") %>% 122 | # autres mailles supra-communales 123 | mutate(COMM = CODGEO, 124 | PAYS = "FRA", 125 | METRODOM = case_when(substr(CODGEO,1,2) %in% '97' ~ "DOM", TRUE ~ "METRO")) %>% 126 | left_join(COMM_GRIDENS_OK, by = c('CODGEO', "CODGEO")) 127 | 128 | } 129 | 130 | 131 | # !!sym(paste0("POP_",last_RP)) 132 | #anneeRP 133 | anneeRP_prec <- anneeRP - 5 134 | anneeRP_precpe <- anneeRP - 10 135 | 136 | NIVGEO_indics_histodemo <- 137 | TABLE %>% 138 | left_join(table_supracom_OK, by = c("CODGEO" = "CODGEO")) %>% 139 | mutate(#POPDEB1015 = POP_2010, POPFIN1015 = POP_2015, 140 | !!sym(paste0("POPDEB",substr(anneeRP_prec,3,4),substr(anneeRP,3,4))) := !!sym(paste0("POP_",anneeRP_prec)), 141 | !!sym(paste0("POPFIN",substr(anneeRP_prec,3,4),substr(anneeRP,3,4))) := !!sym(paste0("POP_",anneeRP)), 142 | !!sym(paste0("POPDEB",substr(anneeRP_precpe,3,4),substr(anneeRP_prec,3,4))) := !!sym(paste0("POP_",anneeRP_precpe)), 143 | !!sym(paste0("POPFIN",substr(anneeRP_precpe,3,4),substr(anneeRP_prec,3,4))) := !!sym(paste0("POP_",anneeRP_prec)), 144 | !!sym(paste0("POPDEB99",substr(anneeRP_precpe,3,4))) := POP_1999, 145 | !!sym(paste0("POPFIN99",substr(anneeRP_precpe,3,4))) := !!sym(paste0("POP_",anneeRP_precpe)), 146 | POPDEB9099 = POP_1990, POPFIN9099 = POP_1999, 147 | POPDEB8290 = POP_1982, POPFIN8290 = POP_1990, 148 | POPDEB7582 = POP_1975, POPFIN7582 = POP_1982, 149 | POPDEB6875 = POP_1968, POPFIN6875 = POP_1975) %>% 150 | dplyr::select(NIVGEO, 151 | ends_with(paste0(substr(anneeRP_prec,3,4),substr(anneeRP,3,4))), 152 | ends_with(paste0(substr(anneeRP_precpe,3,4),substr(anneeRP_prec,3,4))), 153 | ends_with(paste0( "99",substr(anneeRP_precpe,3,4))), 154 | ends_with("9099"),ends_with("8290"),ends_with("7582"),ends_with("6875")) %>% 155 | group_by(!!rlang::sym(NIVGEO)) %>% 156 | summarise_if(is.numeric,funs(sum)) %>% 157 | gather(indic,POP, -!!rlang::sym(NIVGEO)) %>% 158 | mutate(periode = str_sub(indic,-4,-1), 159 | indic = substr(indic,1,nchar(indic)-4)) %>% 160 | spread(indic,POP) %>% 161 | mutate(annee_debut = case_when(substr(periode,1,2) <20 ~ as.numeric(paste0(20,substr(periode,1,2))), 162 | TRUE ~ as.numeric(paste0(19,substr(periode,1,2))) )) %>% 163 | mutate(annee_fin = case_when(str_sub(periode,-2,-1) <20 ~ as.numeric(paste0(20,str_sub(periode,-2,-1))), 164 | TRUE ~ as.numeric(paste0(19,str_sub(periode,-2,-1))) )) %>% 165 | mutate(EVOLPOP = POPFIN - POPDEB, 166 | SN = NAIS - DECE, 167 | SM = EVOLPOP - SN) %>% 168 | mutate(nb_annees = annee_fin - annee_debut, 169 | TCAMPOP = (POPFIN / POPDEB) ^(1/nb_annees)-1, 170 | TCAMPOP_SN = SN * TCAMPOP / EVOLPOP, 171 | TCAMPOP_SM = TCAMPOP - TCAMPOP_SN) %>% 172 | mutate(periode_annees = paste0(annee_debut,"_",annee_fin), 173 | periode_milieu = annee_fin - (annee_fin - annee_debut)/2) %>% 174 | # ordres des variables 175 | select(!!rlang::sym(NIVGEO), 176 | periode = periode_annees, periode_milieu, periode_nb_annees = nb_annees, 177 | POPULATION_debut = POPDEB, 178 | POPULATION_fin = POPFIN, 179 | DECES = DECE, 180 | NAISSANCES = NAIS, 181 | EVOL_DEMO_TOT = EVOLPOP, 182 | EVOL_DEMO_SN = SN, 183 | EVOL_DEMO_SMA = SM, 184 | TX_EVOL_DEMO_AN_TOT = TCAMPOP, 185 | TX_EVOL_DEMO_AN_SN = TCAMPOP_SN, 186 | TX_EVOL_DEMO_AN_SMA = TCAMPOP_SM) 187 | 188 | } 189 | 190 | -------------------------------------------------------------------------------- /docs/reference/calcul_flux_migres.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Calculer le volume de migrations résidentielles entre zones — calcul_flux_migres • migR 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 47 | 48 | 49 | 50 | 51 | 52 |
    53 |
    54 | 108 | 109 | 110 |
    111 | 112 |
    113 |
    114 | 119 | 120 |
    121 | 122 |

    A partir d'une table en entrée contenant un champ de résidence actuelle et un champ de résidence antérieure sur le même niveau géographique.

    123 | 124 |
    125 | 126 |
    calcul_flux_migres(TABLE, NIVGEO_ANTE, NIVGEO_ACTU, VAR_NB,
    127 |   VAR_VENTIL = NULL, MIG_NET_INTERNE = TRUE)
    128 | 129 |

    Arguments

    130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 |
    TABLE

    Table en entrée contenant un champ de résidence actuelle et un champ de résidence antérieure sur le même niveau géographique (communes, départements, etc...).

    NIVGEO_ANTE

    Nom du champ de la table en entrée contenant le niveau géographique de résidence antérieure.

    NIVGEO_ACTU

    Nom du champ de la table en entrée contenant le niveau géographique de résidence actuelle.

    VAR_NB

    Nom du champ de la table en entrée contenant l'indicateur de pondération du tuple.

    VAR_VENTIL

    Nom du champ de la variable de ventilation de la population, de type tranche d'âge, groupe socio-professionnel, etc... (facultatif).

    MIG_NET_INTERNE

    Vaut TRUE si le calcul doit se faire uniquement sur les zones présentes à la fois en résidence actuelle et en résidence antérieure.

    157 | 158 |

    Value

    159 | 160 |

    Renvoie une table contenant un champ de résidence actuelle, un champ de résidence antérieure et un champ du nombre de migrations résidentielles entre chaque coupe de zones.

    161 | 162 | 163 |

    Examples

    164 |
    # NOT RUN {
    165 | # Calcul de la table de nombre de migrations entre résidence actuelle et résidence antérieure au niveau départemental
    166 | flux_migres_DEP <-
    167 | calcul_flux_migres(TABLE =FD_MIGCOM_2015 ,
    168 |                  VAR_NB = "IPONDI",
    169 |                  MIG_NET_INTERNE=TRUE,
    170 |                  NIVGEO_ANTE ="DEP_ANTE",
    171 |                  NIVGEO_ACTU ="DEP_ACTU")
    172 | # Calcul de la table de nombre de migrations entre résidence actuelle et résidence antérieure au niveau régional, et ventilés par groupe socio-professione
    173 | flux_migres_REG_CS1 <-
    174 | calcul_flux_migres(TABLE =FD_MIGCOM_2015 ,
    175 |                  VAR_NB = "IPONDI",
    176 |                  VAR_VENTIL = "CS1",
    177 |                  MIG_NET_INTERNE=TRUE,
    178 |                  NIVGEO_ANTE ="REG_ANTE",
    179 |                  NIVGEO_ACTU ="REG_ACTU")
    180 | # }
    181 |
    182 | 193 |
    194 | 195 |
    196 | 199 | 200 |
    201 |

    Site built with pkgdown.

    202 |
    203 | 204 |
    205 |
    206 | 207 | 208 | 209 | 210 | 211 | 212 | -------------------------------------------------------------------------------- /docs/reference/ajout_libelles_varventil_insee.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Ajouter le libellé d'une modalité de variable de ventilation — ajout_libelles_varventil_insee • migR 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 47 | 48 | 49 | 50 | 51 | 52 |
    53 |
    54 | 108 | 109 | 110 |
    111 | 112 |
    113 |
    114 | 119 | 120 |
    121 | 122 |

    Ajouter le libellé d'une modalité de variable de ventilation (issue d'un fichier du RP Insee) à partir du champ contenant le code en format court.

    123 | 124 |
    125 | 126 |
    ajout_libelles_varventil_insee(TABLE, VAR, MILLESIME_RP)
    127 | 128 |

    Arguments

    129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 |
    TABLE

    Table en entrée avec un champ contenant les modalités d'une variable de ventilation en format court (liste : cf. details ci-dessous).

    VAR

    Nom du champ contenant les modalités d'une variable de ventilation en format court (liste : cf. details ci-dessous).

    MILLESIME_RP

    Millésime du recensement RP de l'Insee de la variable de ventilation en entrée (liste : cf. details ci-dessous).

    144 | 145 |

    Value

    146 | 147 |

    Renvoie une table avec un champ supplémentaire contenant le libellé de la modalité.

    148 | 149 |

    Details

    150 | 151 |

    Les millésimes du RP disponibles sont les suivants : 2008, 2013, 2014, 2015.

    152 |

    Les variables de ventilation disponbibles sont issues de la documentation des fichiers détail 'Migrations Résidentielles' et sont les suivants :

      153 |
    • Période regroupée d'achèvement de la construction de la maison ou de l'immeuble ('ACHLR')

    • 154 |
    • Âge regroupé de la personne de référence du ménage en 8 classes d'âge ('AGEMEN8')

    • 155 |
    • Âge quinquennal en années révolues ('AGEREVQ')

    • 156 |
    • Ancienneté d'emménagement ('ANEMC')

    • 157 |
    • Catégorie de population condensée ('CATPC')

    • 158 |
    • Catégorie socioprofessionnelle en 8 postes ('CS1')

    • 159 |
    • Catégorie socioprofessionnelle de la personne de référence du ménage en 8 postes ('CSM')

    • 160 |
    • Diplôme le plus élevé ('DIPL_15')

    • 161 |
    • Département de naissance (si né en France) ('DNAI')

    • 162 |
    • Condition d'emploi ('EMPL')

    • 163 |
    • Indicateur du lieu de naissance ('INAI')

    • 164 |
    • Indicateur de nationalité condensé (Français/Étranger) ('INATC')

    • 165 |
    • Indicateur de résidence antérieure au 1er janvier de l'année précédente ('IRAN')

    • 166 |
    • Indicateur urbain du lieu de résidence antérieure au 1er janvier de l'année précédente ('IRANUU')

    • 167 |
    • Lien à la personne de référence du ménage ('LPRM')

    • 168 |
    • Indicateur Métropole ou DOM du lieu de résidence ('METRODOM')

    • 169 |
    • Mode de cohabitation ('MOCO')

    • 170 |
    • Activité économique en 17 postes (NA - A17) ('NA17')

    • 171 |
    • Activité économique regroupée en 5 postes ('NA5')

    • 172 |
    • Nombre de personnes du ménage (regroupé) ('NPERR')

    • 173 |
    • Ancienneté de recherche d'emploi ('RECH')

    • 174 |
    • Sexe ('SEXE')

    • 175 |
    • Statut d'occupation détaillé du logement ('STOCD')

    • 176 |
    • Type d'activité ('TACT')

    • 177 |
    • Type d'activité de la personne de référence du ménage ('TACTM')

    • 178 |
    • Mode de transport principal le plus souvent utilisé pour aller travailler ('TRANS')

    • 179 |
    • Type de construction ('TYPC')

    • 180 |
    • Type de logement ('TYPL')

    • 181 |
    • Type de ménage regroupé (en 9 postes) ('TYPMR')

    • 182 |
    183 | 184 | 185 |

    Examples

    186 |
    # NOT RUN {
    187 | # Ajout du champ 'LIB_CS1' contenant le libellé en clair du code CS1 (aka "groupe socioprofessionnel")
    188 | indics_mig_DEP_CS1 <-
    189 | ajout_libelles_varventil_insee(TABLE = indics_mig_DEP_CS1,
    190 |                                VAR ="CS1",
    191 |                                MILLESIME_RP = 2015)
    192 | 
    193 | # }
    194 |
    195 |
    196 | 209 |
    210 | 211 |
    212 | 215 | 216 |
    217 |

    Site built with pkgdown.

    218 |
    219 | 220 |
    221 |
    222 | 223 | 224 | 225 | 226 | 227 | 228 | -------------------------------------------------------------------------------- /docs/reference/ajout_libelles_nivgeo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Ajouter le libellé d'une unité géographique — ajout_libelles_nivgeo • migR 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 47 | 48 | 49 | 50 | 51 | 52 |
    53 |
    54 | 108 | 109 | 110 |
    111 | 112 |
    113 |
    114 | 119 | 120 |
    121 | 122 |

    Ajouter le libellé d'une unité géographique à partir du champ contenant le code en format court.

    123 | 124 |
    125 | 126 |
    ajout_libelles_nivgeo(TABLE, NIVGEO_IN, NIVGEO_OUT, LIBGEO_OUT, COG_NIVGEO)
    127 | 128 |

    Arguments

    129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 |
    TABLE

    Table en entrée avec un champ contenant un code d'unité géographique.

    NIVGEO_IN

    Nom du champ de la table en entrée contenant le code d'unité géographique (en format court, liste : cf. details ci-dessous).

    NIVGEO_OUT

    Nom du code d'unité géographique (en format court, liste : cf. details ci-dessous).

    LIBGEO_OUT

    Nom du champ du libellé d'unité géographique à ajouter dans la table en sortie (par défaut : préfixe "LIB_").

    COG_NIVGEO

    Millésime du Code Officiel Géographique du code d'unité géographique en entrée (liste : cf. details ci-dessous).

    152 | 153 |

    Value

    154 | 155 |

    Renvoie une table avec un champ supplémentaire contenant le libellé de l'unité géographique.

    156 | 157 |

    Details

    158 | 159 |

    Les millésimes du COG disponibles sont les suivants : 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018.

    160 |

    Les niveaux supra-communaux disponibles sont les suivants :

      161 |
    • Département ('DEP')

    • 162 |
    • Région administrative ('REG')

    • 163 |
    • Établissement public de coopération intercommunale ('EPCI')

    • 164 |
    • Arrondissement ('ARR')

    • 165 |
    • Canton-ou-ville ('CV')

    • 166 |
    • Zone d'emploi ('ZE2010')

    • 167 |
    • Unité Urbaine ('UU2010')

    • 168 |
    • Aire Urbaine ('AU2010')

    • 169 |
    • Zonage en Aires Urbaines ('CATAEU2010')

    • 170 |
    • Bassin de vie ('BV2012')

    • 171 |
    • Type de densité selon la grille de densité communale ('TYPEDENS')

    • 172 |
    173 | 174 | 175 |

    Examples

    176 |
    # NOT RUN {
    177 | # Ajout du champ 'LIB_DEP' contenant le libellé en clair du code DEP
    178 | indics_migres_DEP <-
    179 | ajout_libelles_nivgeo(TABLE = indics_migres_DEP,
    180 |                       NIVGEO_IN ="DEP",
    181 |                       COG_NIVGEO = 2018)
    182 | 
    183 | # Ajout du champ 'LIB_REG_ANTE' contenant le libellé en clair des codes EPCI
    184 | flux_migres_EPCI <-
    185 |  ajout_libelles_nivgeo(TABLE = flux_migres_EPCI,
    186 |                        NIVGEO_IN ="EPCI_ANTE",
    187 |                        NIVGEO_OUT ="EPCI",
    188 |                        LIBGEO_OUT = "LIB_EPCI_ANTE",
    189 |                        COG_NIVGEO = 2018) %>%
    190 |   ajout_libelles_nivgeo(TABLE = .,
    191 |                         NIVGEO_IN ="EPCI_ACTU",
    192 |                         NIVGEO_OUT ="EPCI",
    193 |                         LIBGEO = "LIB_EPCI_ACTU",
    194 |                         COG_NIVGEO = 2018)
    195 | # }
    196 |
    197 |
    198 | 211 |
    212 | 213 |
    214 | 217 | 218 |
    219 |

    Site built with pkgdown.

    220 |
    221 | 222 |
    223 |
    224 | 225 | 226 | 227 | 228 | 229 | 230 | -------------------------------------------------------------------------------- /docs/reference/calcul_indics_migres.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Calculer les indicateurs relatifs aux migrations résidentielles pour chaque zone. — calcul_indics_migres • migR 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 47 | 48 | 49 | 50 | 51 | 52 |
    53 |
    54 | 108 | 109 | 110 |
    111 | 112 |
    113 |
    114 | 119 | 120 |
    121 | 122 |

    A partir d'une table en entrée contenant un champ de résidence actuelle et un champ de résidence antérieure sur le même niveau géographique, une table en sortie est créée contenant les indicateurs relatifs aux migrations résidentielles (liste des indicateurs : cf. details ci-dessous).

    123 | 124 |
    125 | 126 |
    calcul_indics_migres(TABLE, NIVGEO_ACTU, NIVGEO_ANTE, NIVGEO, VAR_NB,
    127 |   VAR_VENTIL = NULL)
    128 | 129 |

    Arguments

    130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 |
    TABLE

    Table en entrée contenant a minima un champ de résidence actuelle et un champ de résidence antérieure sur le même niveau géographique, ainsi qu'un champ comptablisant le nombre d'individus correspondant.

    NIVGEO_ACTU

    Nom du champ de la table en entrée contenant le niveau géographique de résidence actuelle.

    NIVGEO_ANTE

    Nom du champ de la table en entrée contenant le niveau géographique de résidence antérieure.

    NIVGEO

    Nom du champ de la table en sortie contenant le niveau géographique.

    VAR_NB

    Nom du champ de la table en entrée contenant le nombre d'individus correspondant à la migration résidence antérieure / résidence actuelle.

    VAR_VENTIL

    Nom du champ de la variable de ventilation de la population, de type tranche d'âge, groupe socio-professionnel, etc... (facultatif).

    157 | 158 |

    Value

    159 | 160 |

    Renvoie une table contenant un champ contenant l'identifiant des territoires ainsi que les indicateurs relatifs aux migrations résidentielles.

    161 | 162 |

    Details

    163 | 164 |

    Les indicateurs générés dans la table de sortie sont les suivants (cf. vignette pour les définitions exactes et les formules de calcul) :

      165 |
    • Population présente ('nb_ind_PRES')

    • 166 |
    • Population autochtone ('nb_ind_AUTO')

    • 167 |
    • Population stable ('nb_ind_ISO')

    • 168 |
    • Population entrante ('nb_ind_ENTR')

    • 169 |
    • Population sortante ('nb_ind_SORT')

    • 170 |
    • Solde migratoire ('SM')

    • 171 |
    • Taux de migration nette interne ('TM')

    • 172 |
    • Taux de rotation nette interne ('TR')

    • 173 |
    • Part d'entrants ('PE')

    • 174 |
    • Part de sortants ('PS')

    • 175 |
    176 | 177 | 178 |

    Examples

    179 |
    # NOT RUN {
    180 | # Calcul du nombre de migrations entre résidence actuelle et résidence antérieure au niveau départemental
    181 | indics_migres_REG <-
    182 |  calcul_indics_migres(TABLE =flux_migres_DEP,
    183 |                       NIVGEO_ANTE ="DEP_ANTE",
    184 |                       NIVGEO_ACTU ="DEP_ACTU",
    185 |                       NIVGEO ="DEP",
    186 |                       VAR_NB = "nb_ind")
    187 | 
    188 | # Calcul du nombre de flux entre résidence actuelle et résidence antérieure au niveau régional, et ventilés par groupe socio-professionel
    189 | indics_migres_REG_CS1 <-
    190 |  calcul_indics_migres(TABLE =flux_migres_REG_CS1,
    191 |                       NIVGEO_ANTE ="DEP_ANTE",
    192 |                       NIVGEO_ACTU ="DEP_ACTU",
    193 |                       NIVGEO ="DEP",
    194 |                       VAR_NB = "nb_ind")
    195 | # }
    196 |
    197 |
    198 | 211 |
    212 | 213 | 223 |
    224 | 225 | 226 | 227 | 228 | 229 | 230 | --------------------------------------------------------------------------------