Programmer en R/Importer un fichier CSV

Un livre de Wikilivres.
Sauter a la navigation Sauter a la recherche

Wikipédia propose un article sur : « Comma-separated values ».

Un fichier CSV est un fichier texte qui contient des données. En général, les valeurs sont séparées par des virgules. Néanmoins, on trouve aussi souvent des valeurs séparées par des points virgules (;) et il arrive que l'on trouve de nombreux autres séparateurs comme des pipes (|) ou même des croisillons (#).

Dans la version basique de R, les fichiers CSV peuvent être importés avec les fonctions read.csv(), read.csv2() et read.table().

La librairie readr développée par Hadley Wickham définit les fonctions read-csv(), read_csv2() et read_delim() qui ont de meilleures performances et de meilleurs paramètres par défaut que les fonctions standards.

Il existe aussi d'autre possibilité avec la librairie rio et la fonction fread() de la librairie data.table.

Pré-requis[modifier | modifier le wikicode]

install.packages(c("readr", "dplyr"))
library(dplyr)
library(readr)

Importer un fichier CSV[modifier | modifier le wikicode]

Nous proposons de prendre comme exemple le fichier des députés postés par l'association Wikimédia France sur DataGouv[1].

  • La fonction read_csv() issue de la librairie readr permet de lire un fichier csv.
  • La fonction glimpse() de la librairie dplyr permet d'avoir un aperçu de la table obtenue.
  library(readr)
  library(dplyr)
  read_csv(file = "data/deputes.csv") % % 
+   glimpse()
Observations: 575
Variables: 10
$ nom             (chr) "François Fillon", "François de Rugy", "Hervé Gaymard", "Aurélie Filippetti"...
$ genre           (chr) "masculin", "masculin", "masculin", "féminin", "féminin", "féminin", "mascul...
$ prenom          (chr) "François", "François", "Hervé", "Aurélie", "Delphine", "Marion", "Jacques",...
$ nom_famille     (chr) "Fillon", "de Rugy", "Gaymard", "Filippetti", "Batho", "Maréchal-Le Pen", "B...
$ date_naissance  (time) 1954-03-04, 1973-12-06, 1960-05-31, 1973-06-17, 1973-03-23, 1989-12-10, 194...
$ lieu_naissance  (chr) "Le Mans", "Nantes", "Bourg-Saint-Maurice", "Villerupt", "Paris", "Saint-Ger...
$ circonscription (chr) "deuxième circonscription de Paris", "première circonscription de la Loire-A...
$ sycomore_id     (int) 3009, 17282, 3322, 17302, 17264, 18477, 921, 17275, 476, 17280, 1300, 17274,...
$ wikidata        (chr) "http://www.wikidata.org/entity/Q101410", "http://www.wikidata.org/entity/Q1...
$ frwiki          (chr) "https://fr.wikipedia.org/wiki/Fran%C3%A7ois%20Fillon", "https://fr.wikipedi...

La fonction read_csv() essaie de deviner le type de chaque variable. On peut aussi indiquer à la fonction le type de chaque variable à l'aide de l'argument col_types. Les types doivent être spécifiés dans la fonction cols() :

  • col_character() pour les chaînes de caractères
  • col_integer() pour les entiers
  • col_double() pour les nombres doubles
  • col_number() pour les nombres
  • col_factor() pour les facteurs
  • col_date() pour les dates
  • col_datetime() pour les dates heures
  • col_logical() pour les booléens
  read_csv(file = "data/deputes.csv", 
+          col_types = cols(
+            nom = col_character(), 
+            genre = col_character(), 
+            prenom = col_character(), 
+            date_naissance = col_datetime(), 
+            lieu_naissance = col_character(), 
+            circonscription = col_character(),
+            sycomore_id = col_character(), 
+            wikidata = col_character(),
+            frwiki = col_character()
+           )
+          ) % % 
+   glimpse()
Observations: 575
Variables: 10
$ nom              chr  "François Fillon", "François de Rugy", "Hervé Gaymard", "Aurélie Filipp...
$ genre            chr  "masculin", "masculin", "masculin", "féminin", "féminin", "féminin", "m...
$ prenom           chr  "François", "François", "Hervé", "Aurélie", "Delphine", "Marion", "Jacq...
$ nom_famille      chr  "Fillon", "de Rugy", "Gaymard", "Filippetti", "Batho", "Maréchal-Le Pen...
$ date_naissance   dttm  1954-03-04, 1973-12-06, 1960-05-31, 1973-06-17, 1973-03-23, 1989-12-10...
$ lieu_naissance   chr  "Le Mans", "Nantes", "Bourg-Saint-Maurice", "Villerupt", "Paris", "Sain...
$ circonscription  chr  "deuxième circonscription de Paris", "première circonscription de la Lo...
$ sycomore_id      chr  "3009", "17282", "3322", "17302", "17264", "18477", "921", "17275", "47...
$ wikidata         chr  "http://www.wikidata.org/entity/Q101410", "http://www.wikidata.org/enti...
$ frwiki           chr  "https://fr.wikipedia.org/wiki/Fran%C3%A7ois%20Fillon", "https://fr.wik...

Notes et références[modifier | modifier le wikicode]

Voir aussi[modifier | modifier le wikicode]

  • anglais : readr sur tidyverse.org
  • anglais : data-import dans le livre R for Data Science de Garrett Grolemund et Hadley Wickham
  • Importer un fichier texte dans Introduction à l’analyse d’enquêtes avec R et RStudio