IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Cours complet pour apprendre R avec une pratique pour l'analyse de données sociologiques

Image non disponible R pour les sociologues (et assimilés)


précédentsommairesuivant

Partie 4 Import/export de données

L'import et l'export de données depuis ou vers d'autres applications, est couvert en détail dans l'un des manuels officiels (en anglais) nommé R Data Import/Export et accessible, comme les autres manuels, à l'adresse suivante : http://cran.r-project.org/manuals.html.

Cette partie est très largement tirée de ce document, et on pourra s'y reporter pour plus de détails.

Importer des données est souvent l'une des premières opérations que l'on effectue lorsque l'on débute sous R, et ce n'est pas la moins compliquée. En cas de problème il ne faut donc pas hésiter à demander de l'aide par les différents moyens disponibles (voir partie 10Partie 10 Où trouver de l'aide) avant de se décourager.

Un des points délicats pour l'importation de données dans R concerne le nom des variables. Pour être utilisables dans R ceux-ci doivent être à la fois courts et explicites, ce qui n'est pas le cas dans d'autres applications comme Modalisa, par exemple. La plupart des fonctions d'importation s'occupent de convertir les noms de manière à ce qu'ils soient compatibles avec les règles de R (remplacement des espaces par des points, par exemple), mais un renommage est souvent à prévoir soit au sein de l'application d'origine, soit une fois les données importées dans R.

Accès aux fichiers et répertoire de travail

Dans ce qui suit, puisqu'il s'agit d'importer des données externes, nous allons avoir besoin d'accéder à des fichiers situés sur le disque dur de notre ordinateur.

Par exemple, la fonction read.table, très utilisée pour l'import de fichiers texte, prend comme premier argument le nom du fichier à importer, ici fichier.txt :

 
Sélectionnez
R> donnees <- read.table("fichier.txt")

Cependant, ceci ne fonctionnera que si le fichier se trouve dans le répertoire de travail de R. De quoi s'agit-il ? Tout simplement du répertoire dans lequel R est actuellement en train de s'exécuter. Pour savoir quel est le répertoire de travail actuel, on peut utiliser la fonction getwd(14) :

 
Sélectionnez
R> getwd()
[1] "/home/julien/r/doc/intro"

Si on veut modifier le répertoire de travail, on utilise setwd en lui indiquant le chemin complet. Par exemple, sous Linux :

 
Sélectionnez
R> setwd("/home/julien/projets/R")

Sous Windows le chemin du répertoire est souvent un peu plus compliqué. Vous pouvez alors utiliser la fonction selectwd de l'extension rgrs(15) en tapant simplement :

 
Sélectionnez
R> selectwd()

Une boîte de dialogue devrait alors s'afficher vous permettant de sélectionner un répertoire sur votre disque. Sous Windows elle devrait ressembler à celle de la figure 4.1.

Image non disponible
Figure 4.1 - Sélection du répertoire de travail avec selectwd

Sélectionnez le répertoire de travail de votre session R et cliquez sur Ok(16). Vous devriez voir s'afficher le message suivant :

 
Sélectionnez
Nouveau répertoire de travail : C:/Documents and Settings/Bureau
Pour automatiser ce changement dans un script, utilisez :
setwd("C:/Documents and Settings/Bureau")

Si vous travaillez en ligne de commande dans la console, le répertoire de travail a été mis à jour. Si vous travaillez dans un script, il peut être intéressant de rajouter la ligne setwd indiquée précédemment, au début de votre script pour automatiser cette opération.

Une fois le répertoire de travail fixé, on pourra accéder directement aux fichiers qui s'y trouvent, en spécifiant seulement leur nom. On peut aussi créer des sous-répertoires dans le répertoire de travail ; une potentielle bonne pratique peut être de regrouper tous les fichiers de données dans un sous-répertoire nommé donnees. On pourra alors accéder aux fichiers qui s'y trouvent de la manière suivante :

 
Sélectionnez
R> donnees <- read.table("donnees/fichier.txt")

Dans ce qui suit, on supposera que les fichiers à importer se trouvent directement dans le répertoire de travail, et on n'indiquera donc que le nom du fichier, sans préciser le chemin ou le répertoire supplémentaire.

Import de données depuis un tableur

Il est assez courant de vouloir importer des données saisies ou traitées avec un tableur du type OpenOffice ou Excel. En général les données prennent alors la forme d'un tableau avec les variables en colonne et les individus en ligne.

Image non disponible

Depuis Excel

La démarche pour importer ces données dans R est d'abord de les enregistrer dans un format de type texte. Sous Excel, on peut ainsi sélectionner Fichier, Enregistrer sous, puis dans la zone Type de fichier, choisir soit Texte (séparateur tabulation), soit CSV (séparateur : point-virgule).

Image non disponible

Dans le premier cas, on peut importer le fichier en utilisant la fonction read.delim2, de la manière suivante :

 
Sélectionnez
R> donnees <- read.delim2("fichier.txt")

Dans le second cas, on utilise read.csv2, de la même manière :

 
Sélectionnez
R> donnees <- read.csv2("fichier.csv")

Depuis OpenOffice

Depuis OpenOffice on procédera de la même manière, en sélectionnant le type de fichier Texte CSV.

Image non disponible

On importe ensuite les données dans R à l'aide de la fonction read.csv :

 
Sélectionnez
R> read.csv("fichier.csv", dec = ",")

Autres sources / en cas de problèmes

Les fonctions read.csv et compagnie sont en fait des dérivées de la fonction plus générique read.table. Celle-ci contient de nombreuses options permettant d'adapter l'import au format du fichier texte. On pourra se reporter à la page d'aide de read.table, si on rencontre des problèmes ou si on souhaite importer des fichiers d'autres sources.

Parmi les options disponibles, on citera notamment :

  • header indique si la première ligne du fichier contient les noms des variables (valeur TRUE) ou non (valeur FALSE) ;
  • sep indique le caractère séparant les champs. En général soit une virgule, soit un point-virgule, soit une tabulation. Pour cette dernière l'option est sep="\t" ;
  • quote indique le caractère utilisé pour délimiter les champs. En général on utilise soit des guillemets doubles (quote="\""), soit rien du tout (quote="") ;
  • dec indique quel est le caractère utilisé pour séparer les nombres et leurs décimales. Il s'agit le plus souvent de la virgule lorsque les données sont en français (dec=","), et le point pour les données anglophones (dec=".").

D'autres options sont disponibles, pour gérer le format d'encodage du fichier source ou de nombreux autres paramètres d'importation. On se référera alors à la page d'aide de read.table et à la section Spreadsheet-like data de R Data Import/Export :

Import depuis d'autres logiciels

La plupart des fonctions permettant l'import de fichiers de données issus d'autres logiciels font partie d'une extension nommée foreign, présente à l'installation de R, mais qu'il est nécessaire de charger en mémoire avant utilisation avec l'instruction :

 
Sélectionnez
R> library(foreign)

SAS

Les fichiers au format SAS se présentent en général sous deux formats : format SAS export (extension .xport ou .xpt) ou format SAS natif (extension .sas7bdat).

R peut lire directement les fichiers au format export via la fonction read.xport de l'extension foreign.

Celle-ci s'utilise très simplement, en lui passant le nom du fichier en argument :

 
Sélectionnez
R> donnees <- read.xport("fichier.xpt")

En ce qui concerne les fichiers au format SAS natif, il existe des fonctions permettant de les importer, mais elles nécessitent d'avoir une installation de SAS fonctionnelle sur sa machine (il s'agit des fonctions read.ssd de l'extension foreign, et sas.get de l'extension Hmisc).

Si on ne dispose que des fichiers au format SAS natif, le plus simple est d'utiliser l'application SAS System Viewer, qui permet de lire des fichiers SAS natif, de les visualiser et de les enregistrer dans un format texte. Cette application est téléchargeable gratuitement, mais ne fonctionne que sous Windows(17) :

Une fois le fichier de données au format SAS natif ouvert on peut l'enregistrer au format texte tabulé. L'import dans R se fait alors avec la commande suivante :

 
Sélectionnez
R> donnees <- read.delim("fichier.txt", na.strings = ".")

SPSS

Les fichiers générés par SPSS sont accessibles depuis R avec la fonction read.spss de l'extension foreign. Celle-ci peut lire aussi bien les fichiers sauvegardés avec la fonction Enregistrer que ceux générés par la fonction Exporter.

La syntaxe est également très simple :

 
Sélectionnez
R> donnees <- read.spss("fichier.sav")

Plusieurs options permettant de contrôler l'importation des données sont disponibles. On se reportera à la page d'aide de la fonction pour plus d'informations.

Modalisa

L'extension rgrs fournit plusieurs fonctions pour l'import ou l'export de données depuis ou vers Modalisa, et pour leur traitement, en particulier concernant les questions à réponses multiples.

L'import de données permet de récupérer des sauvegardes au format ASCII et s'appuie sur la fonction mls.import.

On trouvera davantage d'informations à l'adresse suivante :

Fichiers dbf

L'Insee diffuse ses fichiers détails depuis son site Web au format dBase (extension .dbf). Ceux-ci sont directement lisibles dans R avec la fonction read.dbf de l'extension foreign.

 
Sélectionnez
R> donnees <- read.dbf("fichier.dbf")

La principale limitation des fichiers dbf est de ne pas gérer plus de 256 colonnes. Les tables des enquêtes de l'Insee sont donc parfois découpées en plusieurs fichiers dbf qu'il convient de fusionner avec la fonction merge. L'utilisation de cette fonction est détaillée dans la section 5.6Fusion de tables.

Autres sources

R offre de très nombreuses autres possibilités pour accéder aux données. Il est ainsi possible d'importer des données depuis d'autres applications qui n'ont pas été évoquées (Stata, S-Plus, etc.), de se connecter à un système de base de données relationnelle type MySql, de lire des données via ODBC ou des connexions réseau, etc.

Pour plus d'informations on consultera le manuel R Data Import/Export :

Exporter des données

R propose également différentes fonctions permettant d'exporter des données vers des formats variés.

  • write.table est l'équivalent de read.table et permet d'enregistrer des tableaux de données au format texte, avec de nombreuses options ;
  • write.foreign, de l'extension foreign, permet d'exporter des données aux formats SAS, SPSS ou Stata ;
  • write.dbf, de l'extension foreign, permet d'exporter des données au format dBase ;
  • mls.export, de l'extension rgrs, permet d'exporter des données à destination de Modalisa ;
  • save permet d'enregistrer des objets R sur le disque pour récupération ultérieure ou sur un autre système.

À nouveau, pour plus de détails on se référera aux pages d'aide de ces fonctions et au manuel R Data Import/Export.

Exercices

Exercice 4.9

? Solution

Saisissez quelques données fictives dans une application de type tableur, enregistrez-les dans un format texte et importez-les dans R.

Vérifiez que l'importation s'est bien déroulée.

Exercice 4.10

? Solution

L'adresse suivante permet de télécharger un fichier au format dBase contenant une partie des données de l'enquête EPCV Vie associative de l'Insee (2002) :

Téléchargez le fichier, décompressez-le et importez les données dans R.


précédentsommairesuivant
Le résultat indiqué ici correspond à système Linux, sous Windows vous devriez avoir quelque chose de la forme C:/Documents and Settings/…
Sous Windows, si vous utilisez l'interface graphique par défaut, vous pouvez aussi utiliser la fonction Changer le répertoire courant du menu Fichier
Sous Windows, si vous ne retrouvez pas votre répertoire Mes documents, celui-ci se trouve en général dans le répertoire portant le nom de votre utilisateur situé dans le répertoire Documents and Settings du lecteur {C: . Par exemple C:\Documents and Settings\Administrateur\Mes Documents\…
Ou sous Linux et Mac OS X avec wine.

Copyright © 2017 - Julien Barnier. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts