Vous êtes sur la page 1sur 6

© Sylvain Hanneton 2010 - tous droits réservés

:

Importer des données d'un tableur dans R

Résumé: Ce document est un guide montrant comment importer et accéder à des données issues d'un tableur en utilisant le logiciel R. Le format de fichier intermédiaire choisi est le format CSV.

Mots-clé: statistiques, open office, tableur, format de fichier, importation, R

Table des matières

1 Créer un fichier au bon format

1

1.1 Quel format ?

 

1

1.2 Comment exporter une feuille d'un tableur au format texte ?

2

1.3 Attention

au

séparateur de décimales !

4

1.4 Attention au noms des variables

4

2 Importer les données du fichier texte dans R

4

2.1 Les fonctions « read.csv »

4

2.2 Les paramètres utiles de ces fonctions

4

2.3 Accéder aux données

 

5

3 Un exemple

5

3.1 De OpenOffice à R

 

5

3.2 Importation de tableaux croisés dynamiques

6

1 Créer un fichier au bon format.

1.1 Quel format ?

La façon la plus aisée et la plus fiable de fonctionner est de créer, à partir du tableur, un fichier au format texte. L'avantage d'un tel fichier est que son format très simple lui permet d'être lu par un grand nombre de logiciels. Il peut être aussi modifié très facilement en l'éditant avec un simple éditeur de texte (notepad,

L'inconvénient du fichier texte est qu'il doit avoir une structure très simple mais très

précise pour qu'il soit correct, et qu'il ne peut contenir les données que d'une seule feuille de votre classeur. Globalement, un fichier texte comporte des lignes qui elles-mêmes comportent des données organisées en colonnes grâce au choix d'un caractère qui sert de séparateur de colonnes. Ce fichier texte devra avoir le format suivant :

wordpad, gedit, vi etc

).

la première ligne comporte les noms des variables (colonnes) du classeur séparées par le séparateur de colonne.

1/6

© Sylvain Hanneton 2010 - tous droits réservés

les noms des variables peuvent être écrits entre guillemets ou non

les lignes suivantes comportent les données organisées en colonnes séparées par le caractère de séparation des colonnes.

Voici des exemples de contenus de fichiers textes valides :

Age;Departement;Genre

18;75;1

23;77;1

28;78;2

Ce premier exemple comporte trois variables et donc trois colonnes. Le séparateur de colonne est le caractère « point-virgule ». Les noms des variables ne sont pas écrits entre guillemets.

Second exemple :

«Age»,«Departement»,«Poids»

18,75,78.0

23,77,70.5

28,78,81.3

Dans cet exemple le séparateur de colonnes est le caractère « virgule », le séparateur des décimales est le point (notation anglo-saxonne) et les noms des variables sont indiqués entre guillemets.

Dernier exemple :

«Age».«Departement».«Poids»

18.75.78,0

23.77.70,5

28.78.81,3

Ici le séparateur des colonnes est le point et le séparateur des décimales est la virgule comme dans le système numérique français.

1.2 Comment exporter une feuille d'un tableur au format texte ?

Tous les tableurs (Excel, Gnumeric, OpenOffice) ont une entrée de menu permettant d'exporter les données d'un classeur en différent formats dont le format texte. On trouve cette fonction dans le menu « Fichier- >Enregistrer sous » ou dans « Fichier->Exporter ». Dans les exemples suivants, nous utiliserons le tableur de la suite OpenOffice mais la procédure est la même à peu de chose près avec les autres outils. Nous allons choisir le format dit format texte « CSV 1 » pour importer les données du tableur vers R.

Dans le tableur il suffit

1. d'aller choir « Fichier->Enregistrer sous » et de donner un nom au fichier de sortie

2. de choisir le format CSV en bas à droite dans la boîte de dialogue qui s'affiche (étape 1 de l'Illustration 1

1.NB : L'acronyme CSV veut dire « comma separated values » ou valeurs séparées par des virgules

consultez la page correspondante de Wikipédia par exemple : http://fr.wikipedia.org/wiki/Comma-separated_values .

Si vous souhaitez en savoir plus,

2/6

© Sylvain Hanneton 2010 - tous droits réservés

3. de cocher la case du filtre d'exportation en bas à gauche de la boîte de dialogue (étape 2 de l'illustration

1).

Puisque la case à cocher d'édition des paramètres du filtre d'exportation a été cochée, une autre boîte de dialogue s'affiche alors (voir Illustration 2). On a accès alors au réglages suivants :

encodage des caractères : l'option « UTF-8 » par défaut convient très bien.

Séparateur de champs : il s'agit ici du séparateur des colonnes. Vous pouvez choisir ce que vous voulez sauf la virgule. Je vous conseille le point-virgule qui correspond à un réglage par défaut du logiciel R.

Séparateur de texte : il s'agit ici du caractère qui permet d'encadrer un texte, par exemple un nom de variable ou un code comme « F » et « M » pour une colonne donnant le caractère masculin ou féminin. La valeur par défaut convient.

masculin ou féminin. La valeur par défaut convient. Illustration 1: Enregistrement d'une feuille du classeur

Illustration 1: Enregistrement d'une feuille du classeur au format CSV.

Enregistrement d'une feuille du classeur au format CSV. Illustration 2: Boîte de dialogue de choix des

Illustration 2: Boîte de dialogue de choix des paramètres d'exportation.

La case à cocher « Enregistrer le contenu de la cellule comme affiché » indique que le fichier texte contiendra exactement les mêmes caractères que ceux affichés par le tableur. Dans certains cas, il vaut mieux décocher la case mais en ce qui nous concerne, laissons la case cochée par défaut. Cocher la case « largeur de colonne fixe » n'est utile que pour obtenir par exemple un fichier texte « présentable » directement avec des colonnes qui ressemblent à des vrais colonnes. Nous n'avons pas besoin de cocher cette case.

3/6

© Sylvain Hanneton 2010 - tous droits réservés

1.3 Attention au séparateur de décimales !

Le fichier CSV va contenir par défaut des valeurs décimales utilisant le système « anglo-saxon » pour séparer la partie entière de la partie décimale des nombres.

1. Surtout n'utilisez pas un séparateur de colonnes identique au séparateur de décimales sinon l'importation de vos données dans un autre logiciel va poser problème.

2. Comme on le verra R peut indifféremment travailler avec le point ou la virgule comme séparateur de décimales. Mais il est probable que par défaut il utilise sur votre système l'un ou l'autre de ces séparateurs.

3. D'autre part, si vous souhaitez importer ce fichier CSV dans un autre logiciel vous pouvez avoir des soucis si celui-ci utilise la virgule comme séparateur de décimale. Vos données avec un point peuvent être alors considérées comme des données « textes » (chaîne de caractères) ou autre. La solution est

) et d'utiliser la

souvent d'ouvrir votre fichier CSV avec un éditeur de texte (gedit, notepad, wordpad etc

fonction « rechercher-remplacer » pour remplacer automatiquement tous les points par des virgules.

1.4 Attention au noms des variables

Dans votre classeur, vous avez toujours intérêt à choisir des noms de variables les plus courts et les plus simples possibles. Évitez les espaces et les accents qui peuvent poser problème lors de la création et l'importation du fichier CSV.

2 Importer les données du fichier texte dans R

2.1 Les fonctions « read.csv »

Il existe dans R plusieurs fonctions permettant de lire les données. Il suffit de consulter les aides du logiciel pour en avoir la liste. Ainsi, si vous tapez help(read.table) dans la fenêtre de commande de R vous obtenez la liste de toutes les fonctions dérivées de la fonction read.table(), fonctions qui servent à lire des fichiers textes. Nous choisirons d'utiliser les commandes « read.csv() » et « read.csv2() ».

« read.csv() » : permet de lire directement les fichiers CSV avec comme séparateur de colonnes un point-virgule et comme séparateur de décimales un point.

« read.csv2() » : permet de lire directement les fichiers CSV avec comme séparateur de colonnes un point-virgule et comme séparateur de décimales une virgule (système français).

2.2 Les paramètres utiles de ces fonctions

Le premier paramètre est le nom du fichier CSV qui contient vos données.

header : cette valeur indique si les noms des variables de colonnes sont présentes dans le fichier texte. Si oui, indiquer alors « header=TRUE », sinon « header=FALSE ». La première solution est la valeur par défaut qui convient la plupart du temps.

sep : indique le caractère qui est le séparateur de colonnes, il est par défaut fixé au point virgule dans la fonction read.csv2().

dec : indique le caractère qui est le séparateur de décimales (dec=« , », ou dec= « . »).

4/6

© Sylvain Hanneton 2010 - tous droits réservés

La plupart du temps il est inutile d'utiliser ces paramètres.

2.3 Accéder aux données

La fonction read.csv() ou read.csv2() va récupérer les donnes du fichier et les placer en mémoire dans un structure de données appelée « data frame ». Si la commande utilisée est

D<-read.csv2(«monfichier.csv»)

elle correspond à appeler D la structure de données qui contient les données du fichier « monfichier.csv ». On pourra ensuite accéder séparément aux différentes colonnes du fichiers par le signe « $ » suivi du nom de la variable : D$Age, D$Departement et D$Genre par exemple.

3 Un exemple

3.1 De OpenOffice à R

Nous allons prendre l'exemple d'un fichier de recensement des chutes dans un établissement de personnes âgées. Ce fichier initial est un fichier de classeur OpenOffice (voir Illustration 3).

est un fichier de classeur OpenOffice (voir Illustration 3). Illustration 3: Structure des données initiales dans

Illustration 3: Structure des données initiales dans le tableur.

Après exportation, le fichier CSV apparaît comme ci-dessous dans un éditeur de texte :

"CODE";"sexe";"D.N.";"Age";"mois";"semaine";"jours";"Cons.";"heure";"horaire";"lieu"

"SH_PNECVR";"h";19/08/21;88;12;3;3;3;17;2;3

"SH_UHYQRA";"f";;;12;3;2;1;17;2;1

"SH_YRICVR";"h";;;12;3;7;4;17;2;1

"SH_IREZNE";"f";13/01/13;96;12;2;3;4;17;2;

"SH_FNCYRB";"h";;;12;2;5;3;23;4;1

"SH_INHTÉE";"h";;;12;3;1;4;6;4;1

On peut effectivement constater que le séparateur de colonne est le point-virgule et que les chaînes de caractères sont encadrées de guillemets. On voit également que la première ligne du fichier comporte les noms des colonnes (variables). Il suffit d'entrer dans la fenêtre de commande de R : D<- read.csv2(« fichierchutes.csv ») où « fichierchutes.csv » est le nom du fichier contenant les données et DATA le nom du « data frame » qui contiendra les données. Attention il faut s'assurer que le fichier contenant les données est bien dans le répertoire de travail de R pour que cela marche. Si ce n'est pas le cas vous aurez un message du type :

Erreur dans file(file, "r") : impossible d'ouvrir la connexion De plus : Warning message:

In file(file, "r") :

impossible d'ouvrir le fichier 'fichierchutes.csv' : Aucun fichier ou dossier de ce type

Si cela marche, on peut alors vérifier que le tableau est bien importé dans R en tapant le nom du data frame suivi

5/6

© Sylvain Hanneton 2010 - tous droits réservés

de la touche « entrée ». On obtient alors une fenêtre de commande comme ci-dessous :

> DATA<-read.csv2("fichierchutes.csv") ;

> DATA

CODE sexe

D.N. Age mois semaine jours Cons. heure horaire lieu

1 SH_PNECVR

h 19/08/21

88

12

3

3

3

17

2

3

2 SH_UHYQRA

f

NA

12

3

2

1

17

2

1

3 SH_YRICVR

h

NA

12

3

7

4

17

2

1

4 SH_IREZNE

f 13/01/13

96

12

2

3

4

17

2

NA

5 SH_FNCYRB

h

NA

12

2

5

3

23

4

1

6 SH_INHTÉE

h

NA

12

3

1

4

6

4

1

Si l'on veut accéder aux variables du tableau alors il suffit de taper le nom du data frame suivi du signe dollar puis du nom de la variable. Ainsi pour obtenir l'âge moyen il suffit d'entrer la commande mean(DATA$Age) suivi de la touche entrée. En fait ici il y a des valeurs « NA » qui correspondent à des cases non renseignées donc la bonne commande est la suivante (voir l'aide de la fonction mean) :

> mean(DATA$Age,na.rm=TRUE) [1] 88.97143

>

3.2 Importation de tableaux croisés dynamiques

La même procédure doit être suivie pour les tableaux croisés dynamiques. Ils doivent être placés individuellement sur une feuille et simplifiés pour que les données soient exportables. En particulier il est nécessaire d'enlever les options permettant le calcul des totaux de lignes et colonnes (voir Illustration 4).

des totaux de lignes et colonnes (voir Illustration 4). Illustration 4: Mise en place du pilote

Illustration 4: Mise en place du pilote de données sous OpenOffice (tableau croisé dynamique). Le tableau se met en place par glisser- déposer des boutons portant le nom des variables (1). Pour pouvoir exporter les données il vaut mieux décocher les cases "total-colonnes" (2) et "total-lignes" (3). Pour visualiser ces cases à cocher il faut cliquer sur le bouton "Autres" en bas à droite de la boîte de dialogue.

6/6