library(questionr)
library(tidyverse)Préparer ses données
1 Préalable : le chargement des extensions et de la base R
Utilisation de 2 packages : # questionr (à installer) et tidyverse (déjà installé)
1.1 Chargement des extensions avec la fonction library
1.2 Chargement de la base avec la fonction load
load("../DATA/bns.RData")!! Astuce : il est également possible de le faire en cliquant sur le fichier dans la fenêtre Fichiers (bas à droite)
2 Nettoyage et préparation des données
2.1 Identification du type des variables
Utilisation de l’instruction describe (de l’extension {questionr})
describe(bns)[4066 obs. x 23 variables] tbl_df tbl data.frame
$IDENT:
numeric: 2.02e+13 2.02e+13 2.02e+13 2.02e+13 2.02e+14 2.02e+13 2.02e+14 2.02e+14 2.02e+13 2.02e+13 ...
min: 2.02e+13 - max: 2.02e+14 - NAs: 0 (0%) - 2 unique values
$POND:
numeric: 0.60187632 0.9779219 0.69407288 0.90717176 1.32537509 0.82894369 1.97293471 1.00447518 0.74818343 0.80783431 ...
min: 0.2903716 - max: 3.69319769 - NAs: 0 (0%) - 2864 unique values
$INTERNET:
character: "Non" "Oui" "Oui" "Oui" "Oui" "Oui" "Oui" "Oui" "Oui" "Oui" ...
NAs: 0 (0%) - 2 unique values
$FREQTOT:
character: "Plus rarement" "Tous les jours" "Tous les jours" "Tous les jours" "Tous les jours" "Tous les jours" "Tous les jours" "Tous les jours" "Tous les jours" "Tous les jours" ...
NAs: 0 (0%) - 5 unique values
$MICROPERSO:
character: "Un" "Plusieurs" "Un" "Plusieurs" "Un" "Plusieurs" "Un" "Un" "Plusieurs" "Un" ...
NAs: 0 (0%) - 4 unique values
$MICROPRO:
character: "Plusieurs" "Aucun" "Aucun" "Aucun" "Aucun" "Aucun" "Aucun" "Aucun" "Un" "Aucun" ...
NAs: 0 (0%) - 4 unique values
$TABLETTE:
character: "Non" "Oui" "Oui" "Oui" "Oui" "Oui" "Non" "Oui" "Oui" "Oui" ...
NAs: 0 (0%) - 3 unique values
$SMARTPHO:
character: "Oui" "Oui" "Oui" "Oui" "Oui" "Oui" "Oui" "Oui" "Oui" "Oui" ...
NAs: 0 (0%) - 2 unique values
$HR_ECRAN2:
numeric: 21 5 20 9999 9999 35 28 25 25 70 ...
min: 0 - max: 9999 - NAs: 0 (0%) - 90 unique values
$HR_PHONE:
character: "24" "1" "20" "1" "1" "15" "28" "10" "10" "2" ...
NAs: 0 (0%) - 73 unique values
$ENCEINTE:
character: "Oui" "Oui" "Non" "Non" "Non" "Non" "Oui" "Oui" "Oui" "Non" ...
NAs: 0 (0%) - 4 unique values
$CONNEC1:
character: "Vous en possédez déjà" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous en possédez déjà" "Vous en utiliserez probablement un à l'avenir" "Vous en possédez déjà" "Vous n'en utiliserez probablement pas à l'avenir" ...
NAs: 0 (0%) - 5 unique values
$CONNEC2:
character: "Vous en utiliserez probablement un à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous en possédez déjà" "Vous en possédez déjà" "Vous en utiliserez probablement un à l'avenir" "Vous en possédez déjà" "Vous n'en utiliserez probablement pas à l'avenir" ...
NAs: 0 (0%) - 5 unique values
$CONNEC3:
character: "Vous en possédez déjà" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous en utiliserez probablement un à l'avenir" "Vous en possédez déjà" "Vous n'en utiliserez probablement pas à l'avenir" ...
NAs: 0 (0%) - 5 unique values
$CONNEC4:
character: "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous n'en utiliserez probablement pas à l'avenir" "Vous en utiliserez probablement un à l'avenir" "Vous en possédez déjà" "Vous n'en utiliserez probablement pas à l'avenir" ...
NAs: 0 (0%) - 5 unique values
$CHAT2_1_CORR:
character: "Oui" "Non" "Non" "Non" "Non" "Non" "Non" "Non" "Oui" "Non" ...
NAs: 0 (0%) - 3 unique values
$CHAT2_2_CORR:
character: "Oui" "Non" "Non" "Non" "Non" "Non" "Non" "Non" "Oui" "Oui" ...
NAs: 0 (0%) - 3 unique values
$AGE6FUZ:
character: "25-39 ans" "70 ans et plus" "40-59 ans" "60-69 ans" "70 ans et plus" "70 ans et plus" "60-69 ans" "60-69 ans" "40-59 ans" "40-59 ans" ...
NAs: 0 (0%) - 6 unique values
$SEXE:
character: "Homme" "Femme" "Femme" "Femme" "Femme" "Femme" "Homme" "Femme" "Femme" "Homme" ...
NAs: 0 (0%) - 2 unique values
$PCS8EGO:
character: "Autre inactif" "Retraité" "Profession Intermédiaire" "Retraité" "Retraité" "Retraité" "Employé" "Retraité" "Agri. exploitant, artisan, commerçant et chef d'entreprise" "Cadre et profession intellectuelle supérieure" ...
NAs: 0 (0%) - 8 unique values
$DIPL5:
character: "Diplômé du supérieur" "Diplômé du supérieur" "Diplômé du supérieur" "Non diplômé" "BEPC" "Diplômé du supérieur" "Non diplômé" "BEPC" "Diplômé du supérieur" "Diplômé du supérieur" ...
NAs: 0 (0%) - 5 unique values
$NBPERS:
numeric: 1 2 1 4 2 2 2 2 5 2 ...
min: 1 - max: 9 - NAs: 0 (0%) - 9 unique values
$AGGLO5:
character: "Agglomération parisienne" "100 000 habitants et plus" "Communes rurales" "Communes rurales" "100 000 habitants et plus" "20 000 à 99 999 habitants" "2 000 à 19 999 habitants" "20 000 à 99 999 habitants" "2 000 à 19 999 habitants" "20 000 à 99 999 habitants" ...
NAs: 0 (0%) - 5 unique values
- Astuce : on peut voir le type des variables directement dans la fenêtre Environnement
2.2 Factorisation, recodage des NA et réordonnancement
2.2.1 Préambule
- Sous R, les variables catégorielles seront reconnues comme des variables de type factor (et non character)
- Sous R, les non-réponses doivent être codées en NA pour être reconnues comme telles
- Les modalités des variables catégorielles (ordinales notamment) ne sont pas toujours correctement ordonnancées
Pour chaque variable catégorielle, il faudra donc procéder en trois étapes :
- Tri à plat de la variable brute (pour voir ce qu’il faut faire);
- Factorisation avec éventuel recodage des non-réponses en NA et éventuel réordonnancement des modalités de réponse;
- Tri à plat de la nouvelle variable (pour vérifier ce qui a été fait) ;
!! Nota Bene : il est important de créer une nouvelle variable (nouveau nom) afin de ne pas écraser la variable initiale brute
2.2.2 Exemple avec la variable FREQTOT
- Tri à plat avec la fonction freq (nombase$nomvariable)
freq(bns$FREQTOT) n % val%
Jamais 375 9.2 9.2
Non réponse 1 0.0 0.0
Plus rarement 125 3.1 3.1
Tous les jours 3316 81.6 81.6
Une à deux fois par semaine 249 6.1 6.1
Recodage nécessaire des “Non réponse” en NA et ordonnancement de la variable
- Recodage de FREQTOT en UTILINT
Utilisation du recodage interactif dans les Extensions Levels Recoding et Ordering
Utilisation du pipe |> ou %>% : application sur l’objet placé avant de la fonction située après
bns$UTILINT <- bns$FREQTOT |>
fct_recode(
NULL = "Non réponse"
) |>
fct_relevel(
"Tous les jours", "Une à deux fois par semaine", "Plus rarement",
"Jamais"
)- Vérification avec tri à plat de la variable UTILINT
freq(bns$UTILINT) n % val%
Tous les jours 3316 81.6 81.6
Une à deux fois par semaine 249 6.1 6.1
Plus rarement 125 3.1 3.1
Jamais 375 9.2 9.2
NA 1 0.0 NA
2.2.3 Application aux autres variables
2.2.3.1 Variables d’intérêt
- Variable INTERNET : factorisation et réordonnancement
freq(bns$INTERNET) n % val%
Non 905 22.3 22.3
Oui 3161 77.7 77.7
bns$NET <- bns$INTERNET |>
fct_recode() |>
fct_relevel ("Oui", "Non")
freq(bns$NET) n % val%
Oui 3161 77.7 77.7
Non 905 22.3 22.3
- Variable MICROPERSO : factorisation, recodage et réordonnancement
freq(bns$MICROPERSO) n % val%
Aucun 637 15.7 15.7
Non réponse 9 0.2 0.2
Plusieurs 1073 26.4 26.4
Un 2347 57.7 57.7
bns$ORDIPERSO <- bns$MICROPERSO |>
fct_recode(
NULL = "Non réponse"
) |>
fct_relevel("Plusieurs", "Un", "Aucun")
freq(bns$ORDIPERSO) n % val%
Plusieurs 1073 26.4 26.4
Un 2347 57.7 57.9
Aucun 637 15.7 15.7
NA 9 0.2 NA
- Variable MICROPRO : factorisation, recodage et réordonnancement
freq(bns$MICROPRO) n % val%
Aucun 2949 72.5 72.5
Non réponse 65 1.6 1.6
Plusieurs 224 5.5 5.5
Un 828 20.4 20.4
bns$ORDIPRO <- bns$MICROPRO |>
fct_recode(
NULL = "Non réponse"
) |>
fct_relevel("Plusieurs", "Un", "Aucun")
freq(bns$ORDIPRO) n % val%
Plusieurs 224 5.5 5.6
Un 828 20.4 20.7
Aucun 2949 72.5 73.7
NA 65 1.6 NA
- Variable TABLETTE : factorisation, recodage et réordonnancement
freq(bns$TABLETTE) n % val%
[Nsp] 29 0.7 0.7
Non 1992 49.0 49.0
Oui 2045 50.3 50.3
bns$TAB <- bns$TABLETTE |>
fct_recode(
NULL = "[Nsp]"
) |>
fct_relevel("Oui", "Non")
freq(bns$TAB) n % val%
Oui 2045 50.3 50.7
Non 1992 49.0 49.3
NA 29 0.7 NA
- Variable SMARTPHO : factorisation et réordonnancement
freq(bns$SMARTPHO) n % val%
Non 492 12.1 12.1
Oui 3574 87.9 87.9
bns$SMARTPHO_f <- bns$SMARTPHO |>
fct_recode() |>
fct_relevel("Oui","Non")
freq(bns$SMARTPHO_f) n % val%
Oui 3574 87.9 87.9
Non 492 12.1 12.1
- Variable ENCEINTE : factorisation, recodage et réordonnancement
freq(bns$ENCEINTE) n % val%
[Nsp] 4 0.1 0.1
"NA" 601 14.8 14.8
Non 2401 59.1 59.1
Oui 1060 26.1 26.1
bns$ENCEINTE_f <- bns$ENCEINTE |>
fct_recode(
NULL = "[Nsp]",
NULL = "NA"
) |>
fct_relevel("Oui", "Non")
freq(bns$ENCEINTE_f) n % val%
Oui 1060 26.1 30.6
Non 2401 59.1 69.4
NA 605 14.9 NA
- Variable CONNEC1 : factorisation et recodage
freq(bns$CONNEC1) n % val%
"NA" 601 14.8 14.8
Non réponse 68 1.7 1.7
Vous en possédez déjà 963 23.7 23.7
Vous en utiliserez probablement un à l'avenir 629 15.5 15.5
Vous n'en utiliserez probablement pas à l'avenir 1805 44.4 44.4
bns$CONN_SANTE <- bns$CONNEC1 |>
fct_recode(
NULL = "Non réponse",
NULL = "NA"
)
freq(bns$CONN_SANTE) n % val%
Vous en possédez déjà 963 23.7 28.3
Vous en utiliserez probablement un à l'avenir 629 15.5 18.5
Vous n'en utiliserez probablement pas à l'avenir 1805 44.4 53.1
NA 669 16.5 NA
- Variable CONNEC2 : factorisation et recodage
freq(bns$CONNEC2) n % val%
"NA" 601 14.8 14.8
Non réponse 107 2.6 2.6
Vous en possédez déjà 791 19.5 19.5
Vous en utiliserez probablement un à l'avenir 890 21.9 21.9
Vous n'en utiliserez probablement pas à l'avenir 1677 41.2 41.2
bns$CONN_SECURITE <- bns$CONNEC2 |>
fct_recode(
NULL = "Non réponse",
NULL = "NA"
)
freq(bns$CONN_SECURITE) n % val%
Vous en possédez déjà 791 19.5 23.6
Vous en utiliserez probablement un à l'avenir 890 21.9 26.5
Vous n'en utiliserez probablement pas à l'avenir 1677 41.2 49.9
NA 708 17.4 NA
- Variable CONNEC3 : factorisation et recodage
freq(bns$CONNEC3) n % val%
"NA" 601 14.8 14.8
Non réponse 96 2.4 2.4
Vous en possédez déjà 684 16.8 16.8
Vous en utiliserez probablement un à l'avenir 879 21.6 21.6
Vous n'en utiliserez probablement pas à l'avenir 1806 44.4 44.4
bns$CONN_DOMOTIQUE <- bns$CONNEC3 |>
fct_recode(
NULL = "Non réponse",
NULL = "NA"
)
freq(bns$CONN_DOMOTIQUE) n % val%
Vous en possédez déjà 684 16.8 20.3
Vous en utiliserez probablement un à l'avenir 879 21.6 26.1
Vous n'en utiliserez probablement pas à l'avenir 1806 44.4 53.6
NA 697 17.1 NA
- Variable CONNEC4 : factorisation et recodage
freq(bns$CONNEC4) n % val%
"NA" 601 14.8 14.8
Non réponse 54 1.3 1.3
Vous en possédez déjà 610 15.0 15.0
Vous en utiliserez probablement un à l'avenir 761 18.7 18.7
Vous n'en utiliserez probablement pas à l'avenir 2040 50.2 50.2
bns$CONN_MENAGER <- bns$CONNEC4 |>
fct_recode(
NULL = "Non réponse",
NULL = "NA"
)
freq(bns$CONN_MENAGER) n % val%
Vous en possédez déjà 610 15.0 17.9
Vous en utiliserez probablement un à l'avenir 761 18.7 22.3
Vous n'en utiliserez probablement pas à l'avenir 2040 50.2 59.8
NA 655 16.1 NA
- Variable CHAT2_1_CORR : factorisation, recodage et réordonnancement
freq(bns$CHAT2_1_CORR) n % val%
Non 3265 80.3 80.3
Non réponse 15 0.4 0.4
Oui 786 19.3 19.3
bns$IA_PRO <- bns$CHAT2_1_CORR |>
fct_recode(
NULL = "Non réponse",
NULL = "NA"
) |>
fct_relevel("Oui","Non")
freq(bns$IA_PRO) n % val%
Oui 786 19.3 19.4
Non 3265 80.3 80.6
NA 15 0.4 NA
- Variable CHAT2_2_CORR : factorisation, recodage et réordonnancement
freq(bns$CHAT2_2_CORR) n % val%
Non 3084 75.8 75.8
Non réponse 17 0.4 0.4
Oui 965 23.7 23.7
bns$IA_PERSO <- bns$CHAT2_2_CORR |>
fct_recode(
NULL = "Non réponse",
NULL = "NA"
) |>
fct_relevel("Oui","Non")
freq(bns$IA_PERSO) n % val%
Oui 965 23.7 23.8
Non 3084 75.8 76.2
NA 17 0.4 NA
2.2.3.2 Variables socio-démographiques —-
- Variable AGE6FUZ : factorisation
freq(bns$AGE6FUZ) n % val%
12-17 ans 208 5.1 5.1
18-24 ans 256 6.3 6.3
25-39 ans 686 16.9 16.9
40-59 ans 1399 34.4 34.4
60-69 ans 623 15.3 15.3
70 ans et plus 894 22.0 22.0
bns$CLAGE <- bns$AGE6FUZ |>
fct_recode()
freq(bns$CLAGE) n % val%
12-17 ans 208 5.1 5.1
18-24 ans 256 6.3 6.3
25-39 ans 686 16.9 16.9
40-59 ans 1399 34.4 34.4
60-69 ans 623 15.3 15.3
70 ans et plus 894 22.0 22.0
- Variable SEXE : factorisation
freq(bns$SEXE) n % val%
Femme 2142 52.7 52.7
Homme 1924 47.3 47.3
bns$GENRE <- bns$SEXE |>
fct_recode()
freq(bns$GENRE) n % val%
Femme 2142 52.7 52.7
Homme 1924 47.3 47.3
- Variable PCS8EGO : factorisation et réordonnancement
freq(bns$PCS8EGO) n % val%
Agri. exploitant, artisan, commerçant et chef d'entreprise 191 4.7 4.7
Autre inactif 452 11.1 11.1
Cadre et profession intellectuelle supérieure 383 9.4 9.4
Employé 572 14.1 14.1
Ouvrier 355 8.7 8.7
Personne au foyer 258 6.3 6.3
Profession Intermédiaire 459 11.3 11.3
Retraité 1396 34.3 34.3
bns$PCS <- bns$PCS8EGO |>
fct_recode(
"Agri. exploitant, artisan·e, commerçant·e et chef·fe d'entreprise" = "Agri. exploitant, artisan, commerçant et chef d'entreprise",
"Autre inactif·ve" = "Autre inactif",
"Employé·e" = "Employé",
"Ouvrier·ère" = "Ouvrier",
"Retraité·e" = "Retraité"
) |>
fct_relevel(
"Agri. exploitant, artisan·e, commerçant·e et chef·fe d'entreprise",
"Cadre et profession intellectuelle supérieure", "Profession Intermédiaire",
"Employé·e", "Ouvrier·ère", "Personne au foyer", "Autre inactif·ve",
"Retraité·e"
)
freq(bns$PCS) n %
Agri. exploitant, artisan·e, commerçant·e et chef·fe d'entreprise 191 4.7
Cadre et profession intellectuelle supérieure 383 9.4
Profession Intermédiaire 459 11.3
Employé·e 572 14.1
Ouvrier·ère 355 8.7
Personne au foyer 258 6.3
Autre inactif·ve 452 11.1
Retraité·e 1396 34.3
val%
Agri. exploitant, artisan·e, commerçant·e et chef·fe d'entreprise 4.7
Cadre et profession intellectuelle supérieure 9.4
Profession Intermédiaire 11.3
Employé·e 14.1
Ouvrier·ère 8.7
Personne au foyer 6.3
Autre inactif·ve 11.1
Retraité·e 34.3
- Variable DIPL5 : factorisation et réordonnancement
freq(bns$DIPL5) n % val%
12-17 ans 208 5.1 5.1
BAC 729 17.9 17.9
BEPC 1254 30.8 30.8
Diplômé du supérieur 1512 37.2 37.2
Non diplômé 363 8.9 8.9
bns$DIPL <- bns$DIPL5 |>
fct_recode(
"Elèves" = "12-17 ans"
) |>
fct_relevel("Elèves","Non diplômé","BEPC","BAC","Diplômé du supérieur")
freq(bns$DIPL) n % val%
Elèves 208 5.1 5.1
Non diplômé 363 8.9 8.9
BEPC 1254 30.8 30.8
BAC 729 17.9 17.9
Diplômé du supérieur 1512 37.2 37.2
- Variable AGGLO5 : factorisation et réordonnancement
freq(bns$AGGLO5) n % val%
100 000 habitants et plus 1258 30.9 30.9
2 000 à 19 999 habitants 672 16.5 16.5
20 000 à 99 999 habitants 582 14.3 14.3
Agglomération parisienne 553 13.6 13.6
Communes rurales 1001 24.6 24.6
bns$AGGLO <- bns$AGGLO5 |>
fct_recode() |>
fct_relevel("Communes rurales","2 000 à 19 999 habitants","20 000 à 99 999 habitants","100 000 habitants et plus","Agglomération parisienne")
freq(bns$AGGLO) n % val%
Communes rurales 1001 24.6 24.6
2 000 à 19 999 habitants 672 16.5 16.5
20 000 à 99 999 habitants 582 14.3 14.3
100 000 habitants et plus 1258 30.9 30.9
Agglomération parisienne 553 13.6 13.6
3 Recodages
3.1 Recodages simples : à partir d’une variable
3.1.1 Exemple 1 : dichotomiser une variable
Variables MICROPERSO et MICROPRO distinguent la possession de plusieurs ou d’un seul ordinateur
On souhaite regrouper les deux modalités en une seule “Oui” et donc Aucun en “Non”
On aura ainsi les mêmes modalités de réponse pour les 4 variables d’équipements
- Variable ORDIPERSO Tri à plat de la variable qui nous permet de prévoir les nouveaux effectifs (1073+2347=3420 “Oui”) et 637 “Non”)
freq(bns$ORDIPERSO) n % val%
Plusieurs 1073 26.4 26.4
Un 2347 57.7 57.9
Aucun 637 15.7 15.7
NA 9 0.2 NA
Recodage en 2 modalités avec la fonction fct_recode
bns$ORDIPERSO_r <- bns$ORDIPERSO |>
fct_recode(
"Oui" = "Plusieurs",
"Oui" = "Un",
"Non" = "Aucun"
)Tri à plat de la nouvelle variable pour vérification
freq(bns$ORDIPERSO_r) n % val%
Oui 3420 84.1 84.3
Non 637 15.7 15.7
NA 9 0.2 NA
- Variable ORDIPRO
freq(bns$ORDIPRO) n % val%
Plusieurs 224 5.5 5.6
Un 828 20.4 20.7
Aucun 2949 72.5 73.7
NA 65 1.6 NA
bns$ORDIPRO_r <- bns$ORDIPRO |>
fct_recode(
"Oui" = "Plusieurs",
"Oui" = "Un",
"Non" = "Aucun"
)
freq(bns$ORDIPRO_r) n % val%
Oui 1052 25.9 26.3
Non 2949 72.5 73.7
NA 65 1.6 NA
3.1.2 Exemple 2 : création de plusieurs variables avec des recodages différents
La variable UTILINT renseigne sur la fréquence d’utilisation d’internet
Elle comporte 4 modalités : Jamais, Rarement, Plusieurs fois par semaine et Tous les jours
Selon notre questionnement, on peut être amené à faire des regroupements différents
Si on s’intéresse à l’utilisation quotidienne, on va isoler les “tous les jours” et regrouper les autres modalités
- Variable utiltlj : utilisation quotidienne d’internet
freq(bns$UTILINT) n % val%
Tous les jours 3316 81.6 81.6
Une à deux fois par semaine 249 6.1 6.1
Plus rarement 125 3.1 3.1
Jamais 375 9.2 9.2
NA 1 0.0 NA
bns$utiltlj <- bns$UTILINT |>
fct_recode(
"Utilise internet tous les jours" = "Tous les jours",
"N'utilise pas internet tous les jours" = "Une à deux fois par semaine",
"N'utilise pas internet tous les jours" = "Plus rarement",
"N'utilise pas internet tous les jours" = "Jamais"
)
freq(bns$utiltlj) n % val%
Utilise internet tous les jours 3316 81.6 81.6
N'utilise pas internet tous les jours 749 18.4 18.4
NA 1 0.0 NA
On pourrait aussi s’intéresser aux enquêtés qui utilisent au moins une fois par semaine internet (3316+249)
- Variable utilsvt : utilisation fréquente d’internet (au moins une fois par semaine)
freq(bns$UTILINT) n % val%
Tous les jours 3316 81.6 81.6
Une à deux fois par semaine 249 6.1 6.1
Plus rarement 125 3.1 3.1
Jamais 375 9.2 9.2
NA 1 0.0 NA
bns$utilsvt <- bns$UTILINT |> fct_recode( "Utilise internet au moins une fois par semaine" = "Tous les jours", "Utilise internet au moins une fois par semaine" = "Une à deux fois par semaine", "Utilise internet rarement ou jamais" = "Plus rarement", "Utilise internet rarement ou jamais" = "Jamais" )
freq(bns$utilsvt) n % val%
Utilise internet au moins une fois par semaine 3565 87.7 87.7
Utilise internet rarement ou jamais 500 12.3 12.3
NA 1 0.0 NA
3.2 Recodages complexes
Création d’une nouvelle variable à partir de plusieurs variables existantes
3.2.1 Exemple 1 : variable synthétique d’équipements
On souhaite avoir une variable synthétique des 4 types d’équipements (ordi perso, pro, tablette et smartphone)
Utilisation de la fonction interaction avec les 4 variables dichotomiques
bns$EQUIP <- interaction(bns$ORDIPERSO_r,bns$ORDIPRO_r,bns$TAB,bns$SMARTPHO_f)
freq(bns$EQUIP) n % val%
Oui.Oui.Oui.Oui 678 16.7 17.1
Non.Oui.Oui.Oui 25 0.6 0.6
Oui.Non.Oui.Oui 1147 28.2 28.9
Non.Non.Oui.Oui 79 1.9 2.0
Oui.Oui.Non.Oui 278 6.8 7.0
Non.Oui.Non.Oui 38 0.9 1.0
Oui.Non.Non.Oui 1072 26.4 27.0
Non.Non.Non.Oui 179 4.4 4.5
Oui.Oui.Oui.Non 13 0.3 0.3
Non.Oui.Oui.Non 2 0.0 0.1
Oui.Non.Oui.Non 33 0.8 0.8
Non.Non.Oui.Non 20 0.5 0.5
Oui.Oui.Non.Non 6 0.1 0.2
Non.Oui.Non.Non 2 0.0 0.1
Oui.Non.Non.Non 121 3.0 3.0
Non.Non.Non.Non 282 6.9 7.1
NA 91 2.2 NA
On a 16 (2^4) combinaisons possibles, ce qui disperse beaucoup les effectifs
Regroupements pour avoir au final en 5 modalités :
- aucun des 4 équipements : 1 combinaison avec 4 non (282)
- 1 seul : 4 combinaisons avec 1 seul oui (179+20+2+121)
- 2 sur 4 : 6 combinaisons avec 2 oui (6+33+2+1072+38+79)
- 3 sur 4 : 4 combinaisons avec 3 oui (25+1147+278+13)
- les 4 : 1 combinaison avec 4 oui (678)
bns$EQUIP <- interaction(bns$ORDIPERSO_r,bns$ORDIPRO_r,bns$TAB,bns$SMARTPHO_f)|>
fct_recode(
"Les 4 équipements" = "Oui.Oui.Oui.Oui",
"3 équipements" = "Non.Oui.Oui.Oui",
"3 équipements" = "Oui.Non.Oui.Oui",
"2 équipements" = "Non.Non.Oui.Oui",
"3 équipements" = "Oui.Oui.Non.Oui",
"2 équipements" = "Non.Oui.Non.Oui",
"2 équipements" = "Oui.Non.Non.Oui",
"1 seul équipement" = "Non.Non.Non.Oui",
"3 équipements" = "Oui.Oui.Oui.Non",
"2 équipements" = "Non.Oui.Oui.Non",
"2 équipements" = "Oui.Non.Oui.Non",
"1 seul équipement" = "Non.Non.Oui.Non",
"2 équipements" = "Oui.Oui.Non.Non",
"1 seul équipement" = "Non.Oui.Non.Non",
"1 seul équipement" = "Oui.Non.Non.Non",
"Aucun équipement" = "Non.Non.Non.Non"
)
freq(bns$EQUIP) n % val%
Les 4 équipements 678 16.7 17.1
3 équipements 1463 36.0 36.8
2 équipements 1230 30.3 30.9
1 seul équipement 322 7.9 8.1
Aucun équipement 282 6.9 7.1
NA 91 2.2 NA
3.2.2 Exemple 2 : variable sur l’utilisation de l’IA (perso et/ou pro)
bns$IA <- interaction (bns$IA_PERSO,bns$IA_PRO) |>
fct_recode(
"A déjà utilisé l'IA" = "Oui.Oui",
"A déjà utilisé l'IA" = "Non.Oui",
"A déjà utilisé l'IA" = "Oui.Non",
"N'a jamais utilisé l'IA" = "Non.Non",
)
freq(bns$IA) n % val%
A déjà utilisé l'IA 1185 29.1 29.3
N'a jamais utilisé l'IA 2856 70.2 70.7
NA 25 0.6 NA
!! Nota Bene : il est important, au fur et à mesure des recodages effectués et des créations des nouvelles variables, de mettre à jours le dictionnaire de codage (cf. exemple DICO_QUANTI)
4 Sélections de sous-populations
On peut être amené à ne travailler que sur un sous-échantillon de la population. On va donc filtrer notre population en fonction de critères d’inclusion ou d’exclusion
Exemple : on veut garder que les enquêtés majeurs et donc ne pas prendre en compte les 12-17 ans. Le filtre se fera donc sur la variable CLAGE en excluant (pour aller plus vite) les 12-17 ans
- Tri à plat de la variable du filtre pour savoir le nombre d’enquêtés qui seront décomptés
freq(bns$CLAGE) n % val%
12-17 ans 208 5.1 5.1
18-24 ans 256 6.3 6.3
25-39 ans 686 16.9 16.9
40-59 ans 1399 34.4 34.4
60-69 ans 623 15.3 15.3
70 ans et plus 894 22.0 22.0
208 enquêtés entre 12 et 17 ans donc base finale (4066-208 = 3858)
- Utilisation de la fonction filter sur la variable CLAGE
bns<-filter(bns, CLAGE != "12-17 ans")- Vérification que la nouvelle base ne comporte que 3858 lignes
dim(bns)[1] 3858 47
5 Derniers “nettoyages”
Suppressions des modalités 12-17 ans et Elèves des variables CLAGE et DIPL
On enlève la modalité 12-17 ans à la variable CLAGE
bns$CLAGE <- bns$CLAGE |>
fct_recode(
NULL = "12-17 ans"
)On enlève la modalité Elèves dans DIPL
bns$DIPL <- bns$DIPL |>
fct_recode(
NULL = "Elèves"
)6 Constitution et sauvegarde de la base finale
Sélection finale des variables (en enlevant les anciennes)
bns <- select(bns, -INTERNET, - FREQTOT, - MICROPERSO, - MICROPRO, -TABLETTE, - SMARTPHO, - ENCEINTE, - CONNEC1, -CONNEC2, -CONNEC3, -CONNEC4, -CHAT2_1_CORR,-CHAT2_2_CORR,-AGE6FUZ, -SEXE,-PCS8EGO,-DIPL5,-AGGLO5)Sauvegarde finale de la base
Après avoir réalisé tous ces premiers recodages, créations de nouvelles variables et éventuelles sélections de populations, il est important de sauvegarder la base qui sera ensuite utilisée pour les analyses
save(bns,file = "../DATA/bns.RData") Les données sont désormais prêtes à être exploitées pour réaliser les analyses (cf. DataAnalysis.R)