Préparer ses données

Author

Marie Lesclingand

Published

January 29, 2026

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

library(questionr)
library(tidyverse)

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

  1. 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

  1. 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"
  )
  1. 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)