L'importation dans R

Importation de fichiers CSV dans R

R est un langage qui permet de manipuler d’énormes volumes de données. Autant dire que celles-ci sont rarement saisies à la main dans un script. Voyons comment procéder avec RStudio pour importer des données à nettoyer puis à analyser.

Ci-dessous, le nom du fichier importé dans R sera nommé mes_donnees (on évite généralement les espaces et les accents). On aurait pu l’appeler data, df (pour dataframe) ou autre…

Nous nous concentrerons sur le format CSV mais Il est tout à fait possible d’en importer d’autres après avoir chargé les packages appropriés (notamment haven pour SAS, SPSS et Stata), de se connecter directement à une base de données ou d’importer la table d’une feuille de calcul.

 

Avant l’importation

D’où que viennent les données, il vaut mieux prendre quelques précautions préalables.

En première ligne de la table à importer figurent si possible les noms des variables. Si elles n’en ont pas, c’est R qui les nommera et le résultat risque de ne pas être très parlant. Nous ne nous situerons pas dans ce cas de figure.

Pour le nommage, évitez les caractères spéciaux et les caractères accentués.

En outre, il est préférable de donner aux variables des noms uniques. Sinon, R se chargera là encore de les renommer (en ajoutant un numéro aux homonymes) et ce n’est peut-être pas ce que vous souhaitez.

Si les intitulés de champs comportent des espaces, R les remplacera par des points.

Il vaut mieux indiquer les données manquantes par l’abréviation NA que laisser des champs vides.

Attention à être cohérent sur le séparateur décimal (soit le point soit la virgule).

 

Avec le code

Les données qui nous serviront d’exemple sont très peu nombreuses mais il est évident qu’en pratique ce ne serai pas le cas.

C’est la liste des premiers présidents des États-Unis. Le contenu du fichier CSV est le suivant :

President;Debut_mandat;Fin_mandat
Washington;1789;1797
Adams;1797;1801
Jefferson;1801;1809
Madison;1809;1817
Monroe;1817;1825

Madison

Notez que le séparateur de champs est un point-virgule (format habituel en France, les virgules étant réservées au séparateur décimal).

Il existe plusieurs possibilités pour importer les données d’un fichier CSV. La première est d’écrire une ou deux lignes de code.

Si l’on connaît le chemin (complet ou relatif) pour accéder au fichier (URL, disque dur…), on peut l’indiquer ainsi :

mes_donnees <- "chemin"

Quand le traitement d’un même fichier est récurrent, on l’écrit dans le script. Si l’on n’a pas envie de saisir une adresse de fichier trop longue, il est possible de chercher l’emplacement dans l’arborescence.

Sans RStudio (nous reviendrons un peu plus loin sur les arguments) :

> mes_donnees <- read.csv(file=file.choose(), header=T, sep = ";")

Dans la fenêtre qui apparaît, cherchez le fichier qui contient les données.

Une fois celles-ci importées, on dirait qu’il ne s’est rien passé (sauf en cas de message d’erreur !) parce qu’on ne les visualise pas comme on le ferait avec la feuille de calcul d’un tableur. C’est avec une commande supplémentaire que vous pouvez les afficher, soit en totalité soit en ne sélectionnant que les six premières lignes (fonction head). Ici nous pouvons vérifier l’intégralité du fichier puisqu’il ne comporte que cinq observations !

La fonction read admet plusieurs arguments. Ci-dessus header=T (ou TRUE) signifie qu’il y a des intitulés d’entête (s’il n’y en a pas, header= FALSE). Cette précision était d’ailleurs inutile puisque par défaut cette fonction suppose qu’il y en a. Le séparateur est indiqué entre guillemets : virgule, point-virgule ou autre. Un argument supplémentaire serait celui du séparateur décimal (dec), inemployé ici puisque notre mini-base ne comporte aucun flottant.

On peut également recourir à read.csv2 qui utilise par défaut le point-virgule en séparateur de champ et la virgule en séparateur décimal, contrairement à read.csv qui considère par défaut le modèle anglo-saxon. Cette distinction n’a pas d’importance si vous précisez les arguments.

Le package readr fait partie du tidyverse. Les fonctions s’écrivent avec un tiret du bas : read_csv, read_csv2 mais aussi read_tsv si les séparateurs de champs sont des tabulations et read_fwf si ce sont des espaces fixes.

 

Avec RStudio

L’importation avec RStudio se déroule très simplement. Dans la fenêtre Environment (en haut à droite), clic sur le bouton Import Dataset et un menu propose un choix de formats.

Il est possible que celui du fichier qui vous intéresse nécessite l’installation d’un package. Dans ce cas, RStudio vous propose de le faire.

Là encore, l’arborescence permet de trouver facilement le fichier.

 

Depuis le web

Exemple de script pour accéder à des données CSV du web.

#URL du fichier
url <- "https://people.sc.fsu.edu/~jburkardt/data/csv/airtravel.csv"

# Lire le fichier depuis l'URL
data <- read.csv(url)

#afficher les premières lignes pour vérification
head(data)

Nous obtenons :

table

Note : nous aurions pu charger readr et écrire read_csv(url) si nous avions dû importer une grande quantité de données ou si nous ne souhaitions pas une conversion en facteurs.

 

R importation