6  Importer et contrôler des données

Nous allons désormais commencer à travailler sur un premier jeu de données (fictives !), disponible en cliquant ici.

6.1 Rappel : bien concevoir son répertoire de travail

Pour la suite de la formation, créez un projet Rstudio (menu “File > New Project”) associé à un répertoire donné sur votre ordinateur. Il devra pour l’instant être organisé sous la forme très minimale suivante :

.
├── analyses_archeo.R
├── data
│   └── data_archeo.csv
└── formation_R.Rproj

Autrement dit :

  • un fichier formation_R.Rproj à la racine de ce dossier indique que ce dossier contient un projet Rstudio ;
  • le dosser data contiendra vos données (pour l’instant réduites à un seul fichier CSV) ;
  • le fichier de script analyses_archeo.R contiendra votre script R pour l’analyse du fichier data_archeo.csv.

6.2 Importer un fichier

En toute généralité, la fonction read.table() permet d’importer tout fichier au format texte brut (par exemple les fichiers CSV ou TXT). Sa déclinaison read.csv() est spécialisée dans les fichiers CSV, et est la manière canonique d’importer un fichier CSV en R.

Pour importer la feuille de données, on pourra par exemple exécuter :

dat <- read.csv(
    file = "./data/data_archeo.csv", # le fichier
    header = TRUE,                   # nom des colonnes : oui
    row.names = 1,                   # nom des individus : oui
    sep = ";",                       # séparateur de champ
    dec = ",",                       # séparateur décimal
    stringsAsFactors = TRUE,
    na.strings = ""                  # données manquantes
) 

Le jeu de données correspondant au fichier data_archeo.csv sera désormais stocké dans l’objet R dat.

Les valeurs par défaut des arguments de la fonction read.csv() correspondent aux normes anglaises ou américaines (consulter son aide). Pour des fichiers respectant au contraire les normes françaises de mise en forme (présence du nom des colonnes, point-virgule comme séparateur de champ, virgule comme séparateur décimal), la variante read.csv2() offre de meilleurs arguments par défaut et permet donc d’avoir à en spécifier un peu moins :

dat <- read.csv2(
    file = "./data/data_archeo.csv",
    row.names = 1,
    stringsAsFactors = TRUE,
    na.strings = ""
)
Importer des fichiers texte volumineux

Les fonctions read.table() et read.csv() peuvent être lentes pour importer des fichiers très volumineux (par exemple des fichiers texte brut de plusieurs centaines de mégaoctets, comme on peut en croiser en génétique). Pour ces cas très spécifiques, la fonction fread() du package {data.table} permettra un import plus rapide et des manipulations plus efficaces.

6.3 Résumés et contrôles post-importation

Une fois le fichier importé il est indispensable de procéder à diverses vérifications afin de s’assurer que les données sont exemptes d’erreurs et ont été correctement interprétées par R.

On peut commencer par vérifier les dimensions du tableau de données :

dim(dat) # dimensions = nb lignes, nb colonnes
[1] 43  8

puis le nom des colonnes, pour vérifier qu’elles ont bien toutes été lues :

colnames(dat)
[1] "Site"              "Sexe"              "FM1"              
[4] "TM6"               "RM1"               "Hypoplasie"       
[7] "Presence_parure"   "Orientation_corps"

On pourra également tester les fonctions suivantes, utiles pour vérifier les données :

str(dat)     # contrôle du type des variables
head(dat)    # affichage des 6 premières lignes
dat[1:6, ]   # même chose, de façon "manuelle"

Enfin, il est vivement recommandé d’exécuter systématiquement (au moins pour des tableaux de taille raisonnable) la fonction suivante pour obtenir un résumé des données :

summary(dat)
 Site     Sexe         FM1             TM6             RM1        Hypoplasie
 A:21   F   :19   Min.   :393.7   Min.   :36.13   Min.   :200.7   Non:37    
 B:22   M   :23   1st Qu.:409.6   1st Qu.:43.16   1st Qu.:222.9   Oui: 6    
        NA's: 1   Median :428.4   Median :47.97   Median :230.7             
                  Mean   :431.2   Mean   :47.94   Mean   :232.4             
                  3rd Qu.:444.8   3rd Qu.:51.61   3rd Qu.:243.1             
                  Max.   :508.9   Max.   :59.53   Max.   :257.1             
                  NA's   :4                       NA's   :2                 
 Presence_parure Orientation_corps
 Non:27          Est  :15         
 Oui:16          Nord : 8         
                 Ouest:11         
                 Sud  : 9         
                                  
                                  
                                  

En effet, cette fonction permet notament de détecter certaines erreurs de saisie dans les données (présence d’un min ou max aberrant, coquilles dans le nom des modalités des facteurs, variables reconnues par R dans un type incorrect, etc.).