Programmer en R/Importer un fichier CSV
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
modifierinstall.packages(c("readr", "dplyr"))
library(dplyr)
library(readr)
Importer un fichier CSV
modifierNous 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 librairiereadr
permet de lire un fichier csv. - La fonction
glimpse()
de la librairiedplyr
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èrescol_integer()
pour les entierscol_double()
pour les nombres doublescol_number()
pour les nombrescol_factor()
pour les facteurscol_date()
pour les datescol_datetime()
pour les dates heurescol_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
modifierVoir aussi
modifier- 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