Les migrations résidentielles
depuis, vers et au sein de la
Seine-Saint-Denis

Myriam Yahyaoui - Chargée d’études de l’action régionale

Direction régionale de l’Insee Île-de-France

📦 LISTE DES PACKAGES



  • Nous allons fréquemment utiliser le package DPLYR pour manipuler les données Insee.

Note

Un package est un ensemble de fonctions développées par des utilisateurs de R, qui améliorent ou étendent les fonctionnalités de base. Avant d’installer un package, il est indispensable de déterminer précisément nos besoins, car certaines fonctions d’un package peuvent entrer en conflit. Par exemple, la fonction select existe dans les packages DPLYR et MASS et n’ont pas le même objectif. Cela peut causer des erreurs difficiles à repérer.

  • On va également installer le package GGPLOT2 pour les sorties graphiques.

  • Concernant les sorties tableaux on va installer le package DT et KABLEEXTRA.

install.packages( c("dplyr", "ggplot2", "DT", "kableExtra") )
  • On va installer le package TABLOID développé par deux agents Insee disponible sur le dépôt Github du compte InseeFrLab, pour les statistiques descriptives.
remotes::install_github("inseefrlab/tabloid", dependencies = TRUE) 
  • Une fois installés, on charge les packages avec la fonction library, cela consiste à indiquer à R qu’on souhaite les utiliser dans la session courante.
library(dplyr) ; library(ggplot2) ; library(tabloid)

⛲ LA SOURCE



  • Depuis 2011, on peut retracer les changements de résidence un an avant l’enquête du recensement de la population (RP), ce qui donne un historique sur la période 2011-2022.

  • C’est à partir de la variable IRAN obtenue à partir de la question : « Où habitiez-vous un an auparavant ? » que l’on va dénombrer les migrants infra et supra communales. Cette question du RP permet de mettre en avant, soit un maintien dans le logement, soit un déménagement à l’échelle la plus fine, c’est-à-dire communale. ℹ️ Aide

📍 Le fichier national des migrations résidentielles : localisation à la commune de résidence et à la commune de résidence antérieure en 2022

  • Objectif : données bilocalisées à la commune de résidence et à la commune de résidence antérieure en 2022, décrivant les caractéristiques de l’individu ainsi que celles du ménage auquel il appartient. Subséquemment, le RP 2022 décrit un changement de lieu de résidence survenu au cours de l’année 2021.
  • Champ : individus recensés en France âgés de 1 an ou plus
  • Source : le fichier est constitué à partir des données issues de l’exploitation complémentaire du RP

⬇️ IMPORTATION DE L’EXPLOITATION COMPLÉMENTAIRE DU RP



  • Le fichier national migrations résidentielles est disponible au format Parquet (.parquet) ou Csv (.csv). Compte tenu de son volume, le format Parquet est privilégie et accessible à cette adresse :
url = "https://www.insee.fr/fr/statistiques/fichier/8589767/RP2022_migcom.parquet"
options(timeout = 600, OutDec=",", knitr.kable.NA = "-", digits = 2, encoding = "UTF-8")
1
Il faut augmenter le temps de chargement. Profitons-en pour configurer le marqueur décimal en virgule pour se conformer aux règles dactylographiques françaises.
download.file(url, destfile = "_data/migcom.parquet", mode = "wb")

Note

download.file est une fonction qui permet de télécharger un fichier localement depuis Internet (url), dans le chemin indiqué par l’option destfile.

migcom_rp22 = arrow::read_parquet("_data/migcom.parquet")
  • Le jeu de données contient :
cat(nrow(migcom_rp22) |> prettyNum(big.mark=" "), "lignes et", ncol(migcom_rp22), "colonnes")

17 357 182 lignes et 33 colonnes

  • Le recensement de la population, bien que réalisé avec la méthode des sondages, est la seule source du SSP français qui couvre à la fois toutes les catégories de ménages ou d’individus et l’ensemble du territoire, et qui permet de décrire le profil des ménages migrants. Ainsi, avec cette méthode, chaque observation (logement et ménage, individu, famille) est assortie d’un poids (variables : IPONDL, IPONDI, IPONDF).

📚 DICTIONNAIRE DES VARIABLES 1/2



head(migcom_rp22, n = 3) |>
  DT::datatable(rownames = FALSE, options = list(dom = 't'))
Tableau. 1: Extrait du fichier Insee stocké dans l’objet R nommé migcom.
Insee, Migrations résidentielles : localisation à la commune de résidence et à la commune de résidence antérieure en 2022, Recensement de la population, exploitation complémentaire - Fichiers détail
  • Les noms de variables (colonnes) et les libellés (lignes) ne sont pas explicites (tableau. 1). Subséquement, il faut se référer aux métadonnées ➡️

  • Ci-dessous la ligne de code R pour importer les métadonnées ⬇️

meta = data.table::fread("https://www.insee.fr/fr/statistiques/fichier/8589767/varmod_migcom_2022.csv")

📝 DICTIONNAIRE DES VARIABLES 2/2



meta |> 
  filter(COD_VAR == "IRAN") |> 
  select(-c(LIB_VAR, LONG_VAR)) |>
  DT::datatable(options = list(dom = 't', scrollY = 500, scroller = TRUE))
Tableau. 2: Extrait du dictionnaire des variables du fichier Insee sur les migrations résidentielles stocké dans l’objet R nommé meta.
Insee, Migrations résidentielles : localisation à la commune de résidence et à la commune de résidence antérieure en 2022, Recensement de la population, exploitation complémentaire - Fichiers détail
  • 🏷️ Notre fonction joint le jeu de données et son dictionnaire afin d’ajouter les libellés des modalités aux variables.
ajouter_libelles <- function(data, dico, vars) {
  
  purrr::reduce(vars, function(df, var) {
    
    dico_var <- dico %>%
      filter(.data[["COD_VAR"]] == var) %>%
      select(COD_MOD, LIB_MOD) %>%
      mutate(LIB_MOD = paste(COD_MOD, "-", LIB_MOD) ) %>% 
      rename(!!var := COD_MOD,
             !!paste0(var, "_LIB") := LIB_MOD)
    df %>%
      mutate(!!var := as.character(.data[[var]])) %>%
      left_join(dico_var, by = var)}, 
    .init = data)}
1
Notre fonction comprend trois paramètres: un objet contenant le jeu de données, un objet contenant le dictionnaire des variables, enfin une liste de caractère des variables à chercher dans le dictionnaire.
2
La fonction reduce du package purr. permet le traitement à la chaîne.
3
On renomme les variables pour les correspondances.
4
On convertit la variable en texte pour éviter les problèmes de jointure.

Avertissement

Sur ce point, il est important de rappeler que R est un langage sensible à la casse, ce qui signifie que variable et Variable renvoient à deux objets différents.

  • Utilisons notre fonction pour estimer les personnes qui s’installent en Seine-Saint-Denis et leurs provenances.

🚚🏡 LES NOUVEAUX INSTALLÉS EN SEINE-SAINT-DENIS 1/2



# Le code permet ...
migcom_rp22 = ajouter_libelles(migcom_rp22, meta, "IRAN")

migcom_rp22_dep93 = filter(migcom_rp22, substr(COMMUNE,1,2) == "93") |>
  mutate(IRAN_TRICHO = forcats::fct_recode( case_when(IRAN %in% c("0", "1") ~ "1",
                                                     IRAN %in% c("2", "3") ~ "2",
                                                     TRUE ~ "3"),
                                          "1 - Stable" = "1",
                                          "2 - Migrant au sein de la SSD" = "2",
                                          "3 - Migrant vers la SSD" = "3") )
1
d’ajouter les libellés de la variable IRAN ;
2
de sélectionner les habitants de la Seine-Saint-Denis (93) ;
3
de trichotomiser la variable IRAN et définir ce qu’est un migrant au sein et vers le 93.


  • Le code ci-dessous produit un tableau permettant d’apprécier l’intensité des flux vers et au sein de la Seine-Saint-Denis :
# Package essentiel : tabloid
tableau_iran_dep93 = tab_build(arrange(migcom_rp22_dep93, IRAN), 
                               var_rows = c(IRAN_TRICHO, IRAN_LIB), 
                               var_stat = IPONDI, stat = "sum") %>%
  left_join(tab_pct(., pct = "col") |> 
              tab_round(n = 0, guarantee_100 = TRUE, option = "closest", verbose = TRUE), 
            by = c("IRAN_TRICHO", "IRAN_LIB") ) |>
  mutate(sum.x = round(sum.x) ) |>
  rename("Individus" = sum.x, "%" = sum.y) |>
  tab_render() %>%
  kableExtra::kable_paper("hover", full_width = F)
1
On réalise une jointure à gauche pour disposer de l’information en volume et normalisée.

🚚🏡 LES NOUVEAUX INSTALLÉS EN SEINE-SAINT-DENIS 2/2



IRAN_TRICHO IRAN_LIB Individus %
1 - Stable 0 - Commune ou arrondissement de rattachement 3 550 0
1 - Stable 1 - Dans le même logement 1 536 150 93
1 - Stable Ensemble 1 539 700 93
2 - Migrant au sein de la SSD 2 - Dans un autre logement de la même commune 35 714 2
2 - Migrant au sein de la SSD 3 - Dans une autre commune du département 30 240 2
2 - Migrant au sein de la SSD Ensemble 65 954 4
3 - Migrant vers la SSD 4 - Dans un autre département de la région 31 862 2
3 - Migrant vers la SSD 5 - Hors de la région de résidence actuelle : en métropole 9 668 1
3 - Migrant vers la SSD 6 - Hors de la région de résidence actuelle : dans un DOM 661 0
3 - Migrant vers la SSD 7 - Hors de la région de résidence actuelle : dans un TOM-COM 47 0
3 - Migrant vers la SSD 8 - A l'étranger dans l'Union Européenne (27 pays membres) 1 415 0
3 - Migrant vers la SSD 9 - A l'étranger hors Union Européenne 7 494 0
3 - Migrant vers la SSD Ensemble 51 146 3
Ensemble Ensemble 1 656 801 100
Tableau. 3: Répartition des individus qui se sont installés dans un nouveau logement en Seine-Saint-Denis au cours de l’année 2021

🚚🏡 LES NOUVEAUX INSTALLÉS EN SEINE-SAINT-DENIS 2/2



IRAN_TRICHO IRAN_LIB Individus %
1 - Stable 0 - Commune ou arrondissement de rattachement 3 550 0
1 - Stable 1 - Dans le même logement 1 536 150 93
1 - Stable Ensemble 1 539 700 93
2 - Migrant au sein de la SSD 2 - Dans un autre logement de la même commune 35 714 2
2 - Migrant au sein de la SSD 3 - Dans une autre commune du département 30 240 2
2 - Migrant au sein de la SSD Ensemble 65 954 4
3 - Migrant vers la SSD 4 - Dans un autre département de la région 31 862 2
3 - Migrant vers la SSD 5 - Hors de la région de résidence actuelle : en métropole 9 668 1
3 - Migrant vers la SSD 6 - Hors de la région de résidence actuelle : dans un DOM 661 0
3 - Migrant vers la SSD 7 - Hors de la région de résidence actuelle : dans un TOM-COM 47 0
3 - Migrant vers la SSD 8 - A l'étranger dans l'Union Européenne (27 pays membres) 1 415 0
3 - Migrant vers la SSD 9 - A l'étranger hors Union Européenne 7 494 0
3 - Migrant vers la SSD Ensemble 51 146 3
Ensemble Ensemble 1 656 801 100

Des échanges symétriques

  • En France, le solde migratoire est déduit. En effet, le recensement ne capte ni les sorties vers l’étranger ni, plus généralement, les personnes absentes au moment de l’enquête.

🧮 LE CHAMP 1/2



  • On exclut donc les nouveaux installés en Seine-Saint-Denis venus de l’étranger🚫🌍, afin de se concentrer sur les migrants internes au territoire national.
  • 🛏️ On exclut également les individus en logement non ordinaire. En raison d’une part, de leur faible effectif et d’autre part, leur mode de vie collectif particulier, propre aux communautés de type foyer ou institution en font une population particulière.
Code
migcom_rp22_dep93 |>
  ajouter_libelles(meta, "CATPC") %>%
  tab_build(.,
            var_rows = CATPC_LIB, 
            var_stat = IPONDI, stat = "sum") %>%
  left_join(tab_pct(., pct = "col") |> 
              tab_round(n = 0, guarantee_100 = TRUE, option = "closest", verbose = TRUE), 
            by = "CATPC_LIB" ) |> 
  mutate(sum.x = round(sum.x) ) |>
  rename("Individus" = sum.x, "%" = sum.y) |>
  tab_render()
CATPC_LIB Individus %
0 - Population des ménages 1 633 473 99
1 - Population des communautés 20 823 1
2 - Population des habitations mobiles, sans abri, bateliers 2 505 0
Ensemble 1 656 801 100

🧮 LE CHAMP 2/2



# CATPC == 0 Population des ménages
# IRAN != 8 A l'étranger dans l'Union Européenne (27 pays membres)
# IRAN != 9 A l'étranger hors Union Européenne

migcom_rp22_dep93_horsetr = filter(migcom_rp22_dep93, CATPC == "0", !c( IRAN %in% c( "8", "9" ) ) )
IRAN_TRICHO IRAN_LIB Individus %
1 - Stable 1 - Dans le même logement 1 518 467 93
1 - Stable Ensemble 1 518 467 93
2 - Migrant au sein de la SSD 2 - Dans un autre logement de la même commune 35 268 2
2 - Migrant au sein de la SSD 3 - Dans une autre commune du département 29 425 2
2 - Migrant au sein de la SSD Ensemble 64 693 4
3 - Migrant vers la SSD 4 - Dans un autre département de la région 31 235 2
3 - Migrant vers la SSD 5 - Hors de la région de résidence actuelle : en métropole 9 575 1
3 - Migrant vers la SSD 6 - Hors de la région de résidence actuelle : dans un DOM 651 0
3 - Migrant vers la SSD 7 - Hors de la région de résidence actuelle : dans un TOM-COM 47 0
3 - Migrant vers la SSD Ensemble 41 508 3
Ensemble Ensemble 1 624 668 100

⚠️ MISE EN GARDE 1/2



  • Le recensement rénové livre une photographie “réelle” de la population à un moment donné que pour les communes de moins de 10 000 habitants dont l’année de recensement est celle médiane d’une période quinquennale, soit 2006 pour 2004-2008, 2011 pour 2009-2013… Pour les de 10 000 habitants ou plus, il s’agit d’une estimation élaborée et souffrant des biais inhérents à la méthode du recensement rénové.

  • Pour toutes les variables, qu’elles soient issues de l’exploitation principale ou complémentaire, le sondage pratiqué entraîne une marge d’incertitude sur les résultats. Avec le recensement rénové, plus l’échelle est petite, plus le risque d’erreur est important.

Cf: Fiche de précision des résultats du recensement

Important

Les résultats statistiques doivent donc être interprétés avec prudence, en particulier lorsque les effectifs sont faibles. Il convient de tenir compte des marges d’erreur et, lorsque cela est possible, des intervalles de confiance.

⚠️ MISE EN GARDE 2/2



IRAN_TRICHO IRAN_LIB Individus %
1 - Stable 1 - Dans le même logement 1 518 467 93
1 - Stable Ensemble 1 518 467 93
2 - Migrant au sein de la SSD 2 - Dans un autre logement de la même commune 35 268 2
2 - Migrant au sein de la SSD 3 - Dans une autre commune du département 29 425 2
2 - Migrant au sein de la SSD Ensemble 64 693 4
3 - Migrant vers la SSD 4 - Dans un autre département de la région 31 235 2
3 - Migrant vers la SSD 5 - Hors de la région de résidence actuelle : en métropole 9 575 1
3 - Migrant vers la SSD 6 - Hors de la région de résidence actuelle : dans un DOM 651 0
3 - Migrant vers la SSD 7 - Hors de la région de résidence actuelle : dans un TOM-COM 47 0
3 - Migrant vers la SSD Ensemble 41 508 3
Ensemble Ensemble 1 624 668 100

Informations regroupées

  • Certaines modalités peuvent être regroupées afin de sécuriser l’interprétation statistique des résultats.

🚚🏡 LES ANCIENS RÉSIDENTS DE SEINE-SAINT-DENIS 2/2



# DCRAN = Département et commune de résidence antérieure au 1er janvier n-1 
migcom_rp22_depran93 = filter(migcom_rp22, substr(DCRAN,1,2) == "93", CATPC == "0")
IRAN_TRICHO IRAN_LIB Individus %
1 - Stable 1 - Dans le même logement 1 518 467 92
1 - Stable Ensemble 1 518 467 92
2 - Migrant au sein de la SSD 2 - Dans un autre logement de la même commune 35 268 2
2 - Migrant au sein de la SSD 3 - Dans une autre commune du département 29 425 2
2 - Migrant au sein de la SSD Ensemble 64 693 4
3 - Migrant depuis la SSD 5 - Hors de la région de résidence actuelle : en métropole 23 111 2
3 - Migrant depuis la SSD 4 - Dans un autre département de la région 37 085 2
3 - Migrant depuis la SSD Ensemble 60 195 4
Ensemble Ensemble 1 643 355 100

Définition

  • Un migrant est une personne ayant changé de résidence au moins une fois au cours de la période. Le recensement ne retrace pas l’ensemble des déplacements effectués, mais capte uniquement la résidence finale.

EN RÉSUMÉ 1/2



  • Avec une meilleure compréhension de nos variables, on va construire notre table de travail.
worktable = filter(migcom_rp22, CATPC == "0") |> 
  mutate(Zone = case_when( substr(COMMUNE,1,2) == "75" ~ "2-Paris",
                           substr(COMMUNE,1,2) == "93" ~ "1-Seine-Saint-Denis",
                           substr(COMMUNE,1,2) %in% c("92","94") ~ "3-Petite couronne",
                           substr(COMMUNE,1,2) %in% c("77","78","91","95") ~ "4-Grande couronne",
                           TRUE ~ "5-Province et DROM" ) )
worktable =  bind_rows(
  filter(worktable, 
         substr(COMMUNE,1,2) == "93",
         !c( IRAN %in% c( 0:3 ) ) ) |>
    mutate(STATUT = "Migrants vers la Seine-Saint-Denis",
           Zone = case_when( substr(DCRAN,1,2) == "75" ~ "2-Paris",
                             substr(DCRAN,1,2) == "93" ~ "1-Seine-Saint-Denis",
                             substr(DCRAN,1,2) %in% c("92","94") ~ "3-Petite couronne",
                             substr(DCRAN,1,2) %in% c("77","78","91","95") ~ "4-Grande couronne",
                             TRUE ~ "5-Province et DROM" ) ),
  filter(worktable, 
         substr(DCRAN,1,2) == "93",
         !c( IRAN %in% c( 0:3 ) ) ) |>
    mutate(STATUT = "Migrants depuis la Seine-Saint-Denis"),
  filter(worktable, 
         substr(COMMUNE,1,2) == "93",
         IRAN %in% c( "2", "3" ) ) |>
    mutate(STATUT = "Migrants au sein de la Seine-Saint-Denis") )

worktable_hors_etr = filter(worktable, !c(IRAN %in% c("8", "9")))
1
On crée une variable nommée Zone qui regroupe les communes du lieu de résidence ;
2
On garde la même logique pour les communes du lieu de résidence antérieur ;
tab_build(worktable_hors_etr, var_rows = STATUT, var_stat = IPONDI, stat = "sum") |> 
  mutate(sum = round(sum, -2))
# A tibble: 4 × 2
  STATUT                                      sum
  <chr>                                     <dbl>
1 Migrants vers la Seine-Saint-Denis        41500
2 Migrants depuis la Seine-Saint-Denis      60200
3 Migrants au sein de la Seine-Saint-Denis  64700
4 Ensemble                                 166400

Pour en savoir plus : Mobilités résidentielles des cadres en Seine-Saint-Denis : une intensification récente

EN RÉSUMÉ 2/2



tab_build(arrange(worktable_hors_etr, Zone), 
          var_rows = Zone, var_cols = STATUT, var_stat = IPONDI, 
          stat = "sum") |>
  mutate(Ensemble = `Migrants vers la Seine-Saint-Denis` - `Migrants depuis la Seine-Saint-Denis`) |>
  rename("Solde migratoire" = "Ensemble") |> 
  mutate(across(where(is.numeric), ~ round(.x, -2))) |>
  tab_render() |>
  kableExtra::kable_styling(font_size = 30)
Zone Migrants au sein de la Seine-Saint-Denis Migrants vers la Seine-Saint-Denis Migrants depuis la Seine-Saint-Denis Solde migratoire
1-Seine-Saint-Denis 64 700 0 0 0
2-Paris 0 13 400 6 700 6 600
3-Petite couronne 0 8 700 10 100 -1 400
4-Grande couronne 0 9 200 20 300 -11 100
5-Province et DROM 0 10 300 23 100 -12 800
Ensemble 64 700 41 500 60 200 -18 700

Pour en savoir plus : Mobilités résidentielles des cadres en Seine-Saint-Denis : une intensification récente

👥 PROFILS SOCIO-DÉMOGRAPHIQUES DES MIGRANTS 1/5




  • Solde migratoire et solde naturel sont deux composantes de l’évolution de la population intimement liées. Le mouvement naturel de l’Ile-de-France est particulièrement élevé grâce aux migrations, et l’ampleur du déficit migratoire est renforcé par ce même mouvement. L’Ile-de-France attire de jeunes adultes de province qui, bien souvent, commencent une vie de couple dans cette région. Ils y ont leurs premiers enfants puis repartent en province quelques années plus tard. Ainsi une première immigration contribue à gonfler le nombre de naissances, naissances qui quelques années plus tard contribuent à gonfler l’émigration.
  • L’accent est le plus souvent mis sur l’ampleur quantitative du phénoméne migratoire, sans que soit pris en compte la question, de savoir qui sont ceux qui arrivent et ceux qui partent par rapport à ceux qui étaient initialement sur place. En effet, les caractéristiques socio-économiques et démographiques fracturent l’espace d’un territoire. Dès lors, la question du rôle joué par les migrations dans ces recompositions spatiales mérite d’être posée.

Note

Les caractéristiques des migrants sont connues uniquement à la date du recensement, pas au moment du déménagement.

👥 PROFILS SOCIO-DÉMOGRAPHIQUES DES MIGRANTS 2/5



worktable |>  arrange(IRAN) |> ajouter_libelles(meta, "INATC") |>
  mutate(IRAN_LIB = case_when(IRAN %in% c("8", "9") ~ "A l'étranger",
                              IRAN %in% c(5:7) ~ "Province et DROM",
                              TRUE ~ IRAN_LIB)) %>%
  tab_build(.,
            var_rows = c(STATUT, IRAN_LIB), 
            var_cols = INATC_LIB,
            var_stat = IPONDI, stat = "sum") %>% 
  tab_pct(., pct = "row") |>
  tab_round(n = 0, guarantee_100 = TRUE, option = "closest", verbose = TRUE) |>
  tab_render() |> kableExtra::kable_styling(font_size = 26)
STATUT IRAN_LIB 1 - Français 2 - Etrangers Ensemble
Migrants au sein de la Seine-Saint-Denis 2 - Dans un autre logement de la même commune 67 33 100
Migrants au sein de la Seine-Saint-Denis 3 - Dans une autre commune du département 61 39 100
Migrants au sein de la Seine-Saint-Denis Ensemble 64 36 100
Migrants vers la Seine-Saint-Denis 4 - Dans un autre département de la région 73 27 100
Migrants vers la Seine-Saint-Denis Province et DROM 74 26 100
Migrants vers la Seine-Saint-Denis A l'étranger 21 79 100
Migrants vers la Seine-Saint-Denis Ensemble 64 36 100
Migrants depuis la Seine-Saint-Denis 4 - Dans un autre département de la région 75 25 100
Migrants depuis la Seine-Saint-Denis Province et DROM 88 12 100
Migrants depuis la Seine-Saint-Denis Ensemble 80 20 100
Ensemble Ensemble 70 30 100
  • Parmi les nouveaux résidents du département en provenance d’un pays étranger, 1 848 sont de nationalité française soit une entrée sur cinq depuis l’étranger ( 21  %)

👥 PROFILS SOCIO-DÉMOGRAPHIQUES DES MIGRANTS 3/5



  • Code
  • Graphique
  • Tableau
tableau_repartition_par_age = tab_build(worktable_hors_etr, 
          var_rows = AGEREVQ, var_cols = STATUT, var_stat = IPONDI, stat = "sum") |>
  tab_pct(pct = 'col') |>
  tab_round(n = 2, guarantee_100 = TRUE, option = "closest", verbose = TRUE)

tableau_pourgraphique_repartition_par_age = tableau_repartition_par_age %>%
  mutate(across(where(is.numeric), ~ .x / 5)) |>
  select(-Ensemble) |> 
  filter(AGEREVQ != "Ensemble") |>
  tidyr::pivot_longer(-1) |>
  group_by(name) |>
  mutate( AGEREVQ = seq(0, by = 5, length.out = n()) )|>
  arrange(AGEREVQ) |>
  reframe(
    AGEREVQ = c(0, AGEREVQ),
    value = c(first(value), value)
  )
1
L’âge est une variable quantitative et continue. Ainsi l’intervalle 20-25 ans est composé de 5 unités d’âge révolu 20, 21, 22, 23 et 24.
  • Les personnes s’installant dans le département se distinguent par leur âge. Parmi eux 40 % sont âgés entre 25 et 34 ans, tandis qu’ils sont “seulement” 30 % parmi les personnes quittant le département pour un autre territoire français, enfin 26 % parmi les migrants au sein de la Seine-Saint-Denis. En revanche, on compte parmi ces derniers plus de personnes âgées de 55 ans ou plus et de jeunes adultes (18-24 ans) que parmi les entrants.

AGEREVQ Migrants vers la Seine-Saint-Denis Migrants depuis la Seine-Saint-Denis Migrants au sein de la Seine-Saint-Denis AGEREVQ_LIB
000 4,78 7,18 9,22 000 - 0 à 4 ans
005 3,31 6,65 8,69 005 - 5 à 9 ans
010 3,12 4,72 6,49 010 - 10 à 14 ans
015 5,31 4,21 5,31 015 - 15 à 19 ans
020 17,13 10,40 8,39 020 - 20 à 24 ans
025 22,77 16,40 13,06 025 - 25 à 29 ans
030 16,83 13,33 12,91 030 - 30 à 34 ans
035 9,79 9,99 10,47 035 - 35 à 39 ans
040 5,48 6,72 7,71 040 - 40 à 44 ans
045 4,05 4,41 5,32 045 - 45 à 49 ans
050 2,51 3,30 3,90 050 - 50 à 54 ans
055 1,74 2,91 3,17 055 - 55 à 59 ans
060 1,08 3,66 1,96 060 - 60 à 64 ans
065 0,92 2,47 1,29 065 - 65 à 69 ans
070 0,42 1,60 0,75 070 - 70 à 74 ans
075 0,30 0,83 0,65 075 - 75 à 79 ans
080 0,19 0,55 0,35 080 - 80 à 84 ans
085 0,16 0,42 0,25 085 - 85 à 89 ans
090 0,07 0,19 0,09 090 - 90 à 94 ans
095 0,04 0,05 0,02 095 - 95 à 99 ans
100 0,00 0,01 0,00 100 - 100 à 104 ans
Ensemble 100,00 100,00 100,00 -
Tableau. 4: Migrants depuis (hors étranger), vers, ou au sein de la Seine-Saint-Denis selon leur âge au recensement

👥 PROFILS SOCIO-DÉMOGRAPHIQUES DES MIGRANTS 4/5



  • Code
  • Graphique
  • Tableau
tableau_repartition_par_gs = tab_build(ajouter_libelles(worktable_hors_etr, meta, "GS") |>
            filter(GS != "1") |>
            arrange(GS),
          var_rows = GS_LIB, 
          var_cols = STATUT,
          var_stat = IPONDI, stat = "sum") %>%
  left_join(tab_pct(., pct = "col") |> 
              tab_round(n = 0, guarantee_100 = TRUE, option = "closest", verbose = TRUE) %>%
              rename_with(~ paste0(.x, " %"), tail(names(.), 4)), 
            by = c("GS_LIB")  ) |>
  mutate(across(2:5, ~ round(.x, -2)))

GS_LIB Migrants vers la Seine-Saint-Denis Migrants depuis la Seine-Saint-Denis Migrants au sein de la Seine-Saint-Denis Ensemble Migrants vers la Seine-Saint-Denis % Migrants depuis la Seine-Saint-Denis % Migrants au sein de la Seine-Saint-Denis % Ensemble %
2 - Artisan, commerçant et chef d'entreprise 1 100 1 500 1 700 4 300 3 2 3 2
3 - Cadres 9 500 10 100 6 300 25 900 23 17 10 16
4 - Profession intermédiaire 7 000 8 700 8 200 23 800 17 14 13 14
5 - Employé 5 800 7 600 9 400 22 800 14 13 14 14
6 - Ouvrier 3 000 4 000 6 500 13 500 7 7 10 8
Z - Sans objet 15 100 28 400 32 600 76 000 36 47 50 46
Ensemble 41 500 60 200 64 700 166 400 100 100 100 100
Tableau. 5: Migrants depuis (hors étranger), vers, ou au sein de la Seine-Saint-Denis selon leur groupe socioprofessionnel au recensement

👥 PROFILS SOCIO-DÉMOGRAPHIQUES DES MIGRANTS 5/5



  • Code
  • Tableau
# MOCO = 11 Enfants d'un couple
# MOCO = 12 Enfants d'une famille monoparentale

tableau_repartition_par_moco = worktable_hors_etr |>
  mutate(MOCO = case_when(MOCO == "12" ~ "23", 
                          MOCO == "11" ~ "22",
                          TRUE ~ MOCO)) %>%
  ajouter_libelles(meta, "MOCO") |>
            filter(LPRM == "1") |>
            arrange(MOCO) %>%
  tab_build(.,
          var_rows = MOCO_LIB, 
          var_cols = STATUT,
          var_stat = IPONDI, stat = "sum") %>%
  left_join(tab_pct(., pct = "col") |> 
              tab_round(n = 0, guarantee_100 = TRUE, option = "closest", verbose = TRUE) %>%
              rename_with(~ paste0(.x, " %"), tail(names(.), 4)), 
            by = c("MOCO_LIB")  ) |>
  mutate(across(2:5, ~ round(.x, -2)))

MOCO_LIB Migrants vers la Seine-Saint-Denis Migrants depuis la Seine-Saint-Denis Migrants au sein de la Seine-Saint-Denis Ensemble Migrants vers la Seine-Saint-Denis % Migrants depuis la Seine-Saint-Denis % Migrants au sein de la Seine-Saint-Denis % Ensemble %
21 - Adultes d'un couple sans enfant 4 600 6 900 4 500 16 000 21 24 16 20
22 - Adultes d'un couple avec enfant(s) 2 900 6 200 7 700 16 900 13 21 28 21
23 - Adultes d'une famille monoparentale 1 500 2 400 4 300 8 200 7 8 15 10
31 - Hors famille dans ménage de plusieurs personnes 1 700 1 300 1 300 4 400 8 5 5 6
32 - Personnes vivant seules 11 300 12 300 10 100 33 600 51 42 36 43
Ensemble 22 100 29 200 27 900 79 200 100 100 100 100
Tableau. 6: Migration des ménages depuis (hors étranger), vers, ou au sein de la Seine-Saint-Denis selon leur mode de cohabitation au recensement

FIN

.. et d’autres choses encore !

  • Notamment, pour aller plus loin dans l’utilisation de R :

    • Le script R des traitements réalisés par l’auteur
    • Diffuser la culture de la reproductibilité par une formation aux bonnes pratiques: de la qualité d’un projet aux pipelines de données
    • Le package migR