Section 2 Manipulation de la base
On peut maintenant regarder à quoi ressemble la table principale, celle des données.
%>% head() %>% gt() RP
COMMUNE | ARM | IRIS | ACHL | AEMM | AEMMR | AGEMEN8 | ANEM | ANEMR | ASCEN | BAIN | BATI | CATIRIS | CATL | CHAU | CHFL | CHOS | CLIM | CMBL | CUIS | DEROU | DIPLM | EAU | EGOUL | ELEC | EMPLM | GARL | HLML | ILETUDM | ILTM | IMMIM | INAIM | INEEM | INP11M | INP15M | INP17M | INP19M | INP24M | INP3M | INP60M | INP65M | INP5M | INP75M | INPAM | INPER | INPER1 | INPER2 | INPOM | INPSM | IPONDL | IRANM | METRODOM | NBPI | RECHM | REGION | SANI | SANIDOM | SEXEM | STAT_CONJM | STOCD | SURF | TACTM | TPM | TRANSM | TRIRIS | TYPC | TYPL | VOIT | WC |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
75056 | 75101 | 751010101 | B12 | 2006 | 9 | 20 | 10 | 3 | 1 | Z | Z | H | 1 | Z | 3 | Z | Z | 4 | Z | Z | 17 | Z | Z | Z | ZZ | 2 | 1 | 3 | Z | 2 | 1 | 2 | 0 | 1 | 1 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 1 | 3 | 2 | 1 | 1 | 2 | 2.7933037 | 1 | M | 02 | 9 | 11 | 2 | ZZ | 1 | 3 | 22 | 4 | 22 | Z | Z | 750011 | 3 | 2 | 1 | Z |
75056 | 75101 | 751010101 | B11 | 2015 | 9 | 25 | 1 | 0 | 2 | Z | Z | H | 1 | Z | 3 | Z | Z | 4 | Z | Z | 17 | Z | Z | Z | ZZ | 2 | 2 | Z | Z | 1 | 6 | 0 | 1 | 1 | 1 | 2 | 1 | 1 | 0 | 0 | 1 | 0 | 2 | 3 | 1 | 2 | 1 | 1 | 1.2335216 | 9 | M | 03 | 1 | 11 | 2 | ZZ | 2 | 1 | 21 | 4 | 12 | Z | Z | 750011 | 3 | 2 | 0 | Z |
75056 | 75101 | 751010101 | C115 | 0 | 0 | YY | 999 | 99 | Y | Z | Z | H | 3 | Z | Y | Z | Z | Y | Z | Z | YY | Z | Z | Z | YY | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | 1.2335042 | Y | M | YY | Y | 11 | Y | ZZ | Y | Y | 0 | Y | YY | Y | Y | 750011 | Y | 2 | X | Z |
75056 | 75101 | 751010101 | C115 | 2016 | 9 | 25 | 0 | 0 | 2 | Z | Z | H | 1 | Z | 2 | Z | Z | 2 | Z | Z | 18 | Z | Z | Z | 16 | 2 | 2 | Z | 1 | 2 | 3 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 2 | 1 | 1 | 1 | 0 | 1.2335216 | 5 | M | 02 | Z | 11 | 2 | ZZ | 1 | 2 | 21 | 2 | 11 | 1 | 5 | 750011 | 3 | 2 | 1 | Z |
75056 | 75101 | 751010101 | C115 | 2015 | 9 | 20 | 1 | 0 | 2 | Z | Z | H | 1 | Z | 3 | Z | Z | 4 | Z | Z | 15 | Z | Z | Z | ZZ | 2 | 1 | 1 | Z | 2 | 2 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1.2335216 | 5 | M | 01 | 0 | 11 | 2 | ZZ | 2 | 6 | 22 | 1 | 22 | Z | Z | 750011 | 3 | 2 | 0 | Z |
75056 | 75101 | 751010101 | A11 | 2013 | 9 | 25 | 3 | 1 | 1 | Z | Z | H | 1 | Z | 1 | Z | Z | 4 | Z | Z | 17 | Z | Z | Z | 22 | 2 | 1 | Z | 1 | 1 | 6 | 0 | 1 | 1 | 1 | 2 | 1 | 1 | 0 | 0 | 1 | 0 | 2 | 3 | 1 | 2 | 2 | 0 | 0.8138559 | 1 | M | 03 | Z | 11 | 2 | ZZ | 1 | 1 | 22 | 4 | 11 | 1 | 6 | 750011 | 3 | 2 | 0 | Z |
La fonction str()
ou son équivalent en langage dplyr
la fonction glimpse
nous donne la liste des variables avec cette fois leur format et leurs modalités (les premières seulement s’il y en a beaucoup).
# str(RP)
%>% glimpse() RP
Rows: 2,850,830
Columns: 69
$ COMMUNE <int> 75056, 75056, 75056, 75056, 75056, 75056, 75056, 75056, 750~
$ ARM <fct> 75101, 75101, 75101, 75101, 75101, 75101, 75101, 75101, 751~
$ IRIS <fct> 751010101, 751010101, 751010101, 751010101, 751010101, 7510~
$ ACHL <fct> B12, B11, C115, C115, C115, A11, A11, A11, A11, A11, A11, A~
$ AEMM <int> 2006, 2015, 0, 2016, 2015, 2013, 2013, 2013, 2014, 2013, 20~
$ AEMMR <int> 9, 9, 0, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 9,~
$ AGEMEN8 <fct> 20, 25, YY, 25, 20, 25, 55, 55, 40, 80, 40, 25, 25, 40, 25,~
$ ANEM <int> 10, 1, 999, 0, 1, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 12, 3, 3, 2~
$ ANEMR <int> 3, 0, 99, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 4, 0~
$ ASCEN <fct> 1, 2, Y, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,~
$ BAIN <fct> Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z,~
$ BATI <fct> Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z,~
$ CATIRIS <fct> H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H, H,~
$ CATL <int> 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,~
$ CHAU <fct> Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z,~
$ CHFL <fct> 3, 3, Y, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 3, 3,~
$ CHOS <fct> Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z,~
$ CLIM <fct> Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z,~
$ CMBL <fct> 4, 4, Y, 2, 4, 4, 2, 2, 2, 2, 2, 2, 2, 1, 2, 4, 4, 2, 4, 4,~
$ CUIS <fct> Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z,~
$ DEROU <fct> Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z,~
$ DIPLM <fct> 17, 17, YY, 18, 15, 17, 13, 13, 12, 13, 01, 17, 17, 14, 17,~
$ EAU <fct> Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z,~
$ EGOUL <fct> Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z,~
$ ELEC <fct> Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z,~
$ EMPLM <fct> ZZ, ZZ, YY, 16, ZZ, 22, ZZ, ZZ, ZZ, ZZ, 16, 16, 16, 16, 16,~
$ GARL <fct> 2, 2, Y, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,~
$ HLML <fct> 1, 2, Y, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2,~
$ ILETUDM <fct> 3, Z, Y, Z, 1, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z,~
$ ILTM <fct> Z, Z, Y, 1, Z, 1, Z, Z, Z, Z, 1, 3, 3, 1, 3, Z, 1, Z, 1, 1,~
$ IMMIM <fct> 2, 1, Y, 2, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2,~
$ INAIM <fct> 1, 6, Y, 3, 2, 6, 1, 1, 1, 1, 6, 6, 6, 1, 6, 1, 6, 2, 1, 2,~
$ INEEM <fct> 2, 0, Y, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,~
$ INP11M <fct> 0, 1, Y, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 2, 0, 0, 0, 1, 0, 0,~
$ INP15M <fct> 1, 1, Y, 0, 0, 1, 0, 0, 1, 0, 2, 0, 0, 2, 0, 0, 0, 2, 0, 0,~
$ INP17M <fct> 1, 1, Y, 0, 0, 1, 0, 0, 2, 0, 2, 0, 0, 2, 0, 0, 1, 2, 0, 0,~
$ INP19M <fct> 2, 2, Y, 2, 1, 2, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 2, 1,~
$ INP24M <fct> 2, 1, Y, 0, 1, 1, 0, 0, 2, 0, 2, 0, 0, 2, 0, 0, 2, 2, 0, 1,~
$ INP3M <fct> 0, 1, Y, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,~
$ INP60M <fct> 0, 0, Y, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0,~
$ INP65M <fct> 0, 0, Y, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0,~
$ INP5M <fct> 0, 1, Y, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,~
$ INP75M <fct> 0, 0, Y, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,~
$ INPAM <fct> 1, 2, Y, 2, 0, 2, 0, 0, 1, 0, 1, 1, 1, 2, 1, 0, 2, 1, 1, 1,~
$ INPER <fct> 3, 3, Y, 2, 1, 3, 1, 1, 3, 1, 4, 1, 1, 4, 1, 1, 3, 3, 2, 1,~
$ INPER1 <fct> 2, 1, Y, 1, 0, 1, 1, 1, 2, 0, 3, 0, 0, 2, 0, 0, 0, 0, 1, 0,~
$ INPER2 <fct> 1, 2, Y, 1, 1, 2, 0, 0, 1, 1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1,~
$ INPOM <fct> 1, 1, Y, 1, 0, 2, 0, 0, 0, 0, 1, 1, 1, 2, 1, 0, 1, 0, 1, 1,~
$ INPSM <fct> 2, 1, Y, 0, 1, 0, 0, 0, 2, 0, 2, 0, 0, 1, 0, 0, 2, 2, 0, 0,~
$ IPONDL <dbl> 2.7933037, 1.2335216, 1.2335042, 1.2335216, 1.2335216, 0.81~
$ IRANM <fct> 1, 9, Y, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,~
$ METRODOM <fct> M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M, M,~
$ NBPI <fct> 02, 03, YY, 02, 01, 03, 01, 01, 03, 02, 04, 02, 02, 03, 02,~
$ RECHM <fct> 9, 1, Y, Z, 0, Z, 9, 9, 2, 0, Z, Z, Z, Z, Z, 0, Z, 1, Z, Z,~
$ REGION <int> 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,~
$ SANI <fct> 2, 2, Y, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,~
$ SANIDOM <fct> ZZ, ZZ, ZZ, ZZ, ZZ, ZZ, ZZ, ZZ, ZZ, ZZ, ZZ, ZZ, ZZ, ZZ, ZZ,~
$ SEXEM <fct> 1, 2, Y, 1, 2, 1, 1, 1, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 1, 2,~
$ STAT_CONJM <fct> 3, 1, Y, 2, 6, 1, 6, 6, 6, 4, 1, 6, 6, 1, 6, 5, 6, 6, 1, 6,~
$ STOCD <int> 22, 21, 0, 21, 22, 22, 22, 22, 22, 21, 22, 22, 22, 22, 22, ~
$ SURF <fct> 4, 4, Y, 2, 1, 4, 1, 1, 4, 2, 4, 2, 2, 4, 2, 4, 3, 3, 5, 1,~
$ TACTM <fct> 22, 12, YY, 11, 22, 11, 21, 21, 12, 21, 11, 11, 11, 11, 11,~
$ TPM <fct> Z, Z, Y, 1, Z, 1, Z, Z, Z, Z, 1, 1, 1, 1, 1, Z, 1, Z, 1, 1,~
$ TRANSM <fct> Z, Z, Y, 5, Z, 6, Z, Z, Z, Z, 6, 6, 6, 2, 6, Z, 6, Z, 5, 6,~
$ TRIRIS <fct> 750011, 750011, 750011, 750011, 750011, 750011, 750011, 750~
$ TYPC <fct> 3, 3, Y, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,~
$ TYPL <int> 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,~
$ VOIT <fct> 1, 0, X, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,~
$ WC <fct> Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z,~
Les variables sont en format, soit ‘int’ (“integer” -nombres entiers), soit ‘fct’ (“factor”), ou encore ‘dbl’ (“double” - nombres réels).
On remarque que la plupart des variables ont des modalités en chiffres et/ou lettres, ce qui signifie qu’il faudra probablement recoder ces modalités pour leur donner des libellés dans nos analyses descriptives (tableaux ou graphiques).
Par ailleurs, certaines variables ont été laissées en format ‘integer’ bien que l’on avait mis l’option stringsAsFactors=TRUE
lors du chargement des données, or ces chiffres correspondent bien à des modalités d’une variable catégorielle, il faudra donc le corriger ultérieurement.
Dernière remarque, si on avait eu des valeurs manquantes sur certaines variables, elles se seraient ici affichées avec la modalité NA
, cela ne semble pas le cas, à vérifier par la suite.
2.1 Format des données - WIDE ou LONG
La question du format de la table de données est importante, on distingue généralement le format wide du format long :
- le premier renvoie au cas où chaque ligne correspond a un et un seul individu (ou autre niveau de l’analyse : une entreprise, un ménage, un logement, etc.), et toutes les informations le concernant sont données en colonnes (ce qui peut augmenter rapidement le nombre de colonnes), c’est l’exemple d’une information que l’on a sur plusieurs années, chaque colonne correspondant à l’information de l’année en question ;
- le second, au contraire, multiplie les lignes pour un seul individu, mais il y a alors moins de colonnes, à partir du même exemple précédent, il y aura cette fois une colonne indiquant l’année et une colonne contenant l’information.
Ici, chaque ligne correspond à un logement auquel est associé un ménage (ou le contraire si vous préférez) ; on est bien dans un format wide
.
En revanche, si on considère que notre niveau d’analyse est la commune, on voit alors qu’on dispose de plusieurs lignes par commune et si l’on veut garder quelques informations à ce niveau en n’ayant plus qu’une ligne par commune, on peut changer de format.
Le package tidyverse
contient deux fonctions qui permettent de passer d’un format à un autre : pivot_longer()
et pivot_wider()
présentés en détails ici. Nous aurons l’occasion de les utiliser ultérieurement dans ce cours.
2.2 Sélectionner un champ réduit de la base, séparer les données
Manipuler une base de données, c’est aussi travailler ou créer une table réduite, surtout quand on a des données volumineuses comme ici : c’est donc choisir un champ particulier de la base.
On peut par exemple ici choisir un champ géographique plus réduit au sein de l’Île-de-France, à partir de la commune.
On peut aussi choisir de séparer les données en créant 2 tables selon l’information donnée : le logement ou la personne de référence du ménage.
Comme vous le savez très probablement, dans le langage tidyverse
, pour faire des sélections sur les lignes ou observations dans une table de données, on utilise la fonction filter()
; pour faire des sélections sur les colonnes ou variables, on utilise la fonction select()
; pour supprimer des variables, on utilise également select()
avec un “-” devant la (ou les) variable(s) à supprimer (dans le langage R
de base, on peut aussi utiliser la fonction subset()
).
EXERCICES :
Créer trois nouvelles bases selon les indications suivantes :
- la première que vous nommerez “RP_Paris” et qui rassemblera les données pour le seul département de Paris ;
- la deuxième que nous nommerez “RP_menage” et qui comprendra les données pour les seules variables relatives à la personne de référence du ménage ;
- la troisième que vous nommerez “RP_log_Paris” et qui rassemblera les données pour le seul département de Paris et comprendra toutes les variables sauf celles relatives à la personne de référence du ménage.
<- RP %>% filter(COMMUNE == "75056")
RP_Paris
<- RP %>% select("AEMM", "AEMMR", "AGEMEN8", "ANEM", "ANEMR", "DIPLM",
RP_menage "EMPLM", "ILETUDM", "ILTM", "IMMIM", "INAIM", "IRANM",
"RECHM", "SEXEM", "STAT_CONJM", "TACTM", "TPM", "TRANSM")
<- RP %>% filter(COMMUNE == "75056") %>%
RP_log_Paris select(-c("AEMM", "AEMMR", "AGEMEN8", "ANEM", "ANEMR", "DIPLM",
"EMPLM", "ILETUDM", "ILTM", "IMMIM", "INAIM", "IRANM",
"RECHM", "SEXEM", "STAT_CONJM", "TACTM", "TPM", "TRANSM"))