Importer des données dans R

De EduTech Wiki
Aller à : navigation, rechercher
Analytique et exploration de données
Module: Tutoriels R
◀▬▬▶
brouillon intermédiaire
2014/12/16 ⚒⚒ 2014/11/25
Voir aussi

1 Introduction

Il existe une multitude de possibilité pour importer des données R et ensuite les gérer.

  • R possède des fonctionnalités de base pour lire des fichiers en entier ou encore des fichiers structurés
  • Plusieurs extensions ajoutent des méthodes spécifiques pour lire et éventuellement déjà traiter des données. Parfois les résultats seront stockés dans des structures de données non-standardes (listes).

2 Lecture de données tabulaires

Les fonctions read.table(), read.csv() et read.csv() permettent de lire et importer des fichiers .txt et .csv. Le résultat va se trouver dans une structure de type "data frame".

Ces trois fonctions sont identiques, mais possèdent d'autres défauts. La syntaxe de read.table() est assez riche est compliquée. Ci-dessous, on indique juste quelques exemples.

R peut directement lire un fichier depuis un URL.

On peut indiquer source la fonction file.choose(). Cela permet à l'utilisateur de sélectionner un fichier.

# Le fichier data.txt est lu est stocké dans un nouveau objet R nommé Database
Database <- read.table("data.txt", header = TRUE)

# Le séparateur utilisé dans le fichier délimité est la virgule
Database <- read.table(file.choose(), header = TRUE, sep = ",")

# Fichier de type CSV. Le séparateur utilisé dans le fichier csv est le point-virgule. On force un encodage UTF-8
Database <- read.csv(file.choose(), header = TRUE, sep= ";", encoding="UTF-8")

# Fichier de type CSV depuis un serveur web (ce fichier contient des stats de google webmaster tools pour edutechwiki ...)

Database_webmaster <- read.csv("http://tecfa.unige.ch/guides/R/data/edutechwiki-fr-gw-oct-6-2014.csv", header = TRUE, sep= ",")

# Fichier de type Excel qui contient une simple matrice, la première ligne contient les noms de variables
library(xlsx)
Database <- read.xlsx("c:/dks/myexcel.xlsx", 1)

Visualiser les tableaux:

  • Dans RStudio, cliquer sur le variable (par ex. "Database" ci-dessus) dans le panneau Environment
  • Sinon, utilisez: summary(DB), dim(Database), etc.
  • Pour afficher une colonne out d'autres détails utilisez la syntaxe "$" ou "[..]" expliquée dans l'article Les données R
summary(Database_webmaster)
                      Query       Impressions          Change         Clicks            Change.1   
 10 minutes à perdre wiki:   1   Min.   :   1.00:2089   Min.   :  0.0000:4009  
 123d                    :   1   1st Qu.:   1.00          : 444   1st Qu.:  0.0000   -100%  : 192  
 12 3d                   :   1   Median :   2.00   100%   : 191   Median :  0.0000          :  80  
 123d autodesk           :   1   Mean   :  14.35   -50%   : 180   Mean   :  0.5511   100%   :  46  
 123d autodesk tutorial  :   1   3rd Qu.:   6.00   200%   :  86   3rd Qu.:  0.0000   -50%   :  26  
 123d beta               :   1   Max.   :7500.00   50%    :  74   Max.   :188.0000   200%   :  17  
 (Other)                 :4483                     (Other):1425                      (Other): 119  
      CTR          Change.2      Avg..position       Change.3      
 0%     :3817   Min.   :-100.0   Min.   :  1.00   Min.   :-200.00  
 100%   :  82   1st Qu.:  -6.0   1st Qu.:  6.50   1st Qu.:  -1.00  
 3%     :  51   Median :   4.0   Median :  9.20   Median :   0.40  
 50%    :  44   Mean   :   9.9   Mean   : 20.49   Mean   :   1.06  
 4%     :  33   3rd Qu.:  20.0   3rd Qu.: 21.00   3rd Qu.:   2.00  
 25%    :  32   Max.   : 100.0   Max.   :500.00   Max.   : 300.00  
 (Other): 430   NA's   :3643                      NA's   :2347     
> 

> Database_webmaster$Query[1:10]
 [1] socioconstructivisme          constructivisme               socio constructivisme        
 [4] scénario pédagogique          behaviorisme                  théorie de l'action raisonnée
 [7] xslt tutorial                 curriculum définition         bpmn                         
[10] xslt                         
4489 Levels: 10 minutes à perdre wiki 123d 12 3d 123d autodesk 123d autodesk tutorial ... вебмастер тулс
> Database_webmaster[1,]
                 Query Impressions Change Clicks Change.1 CTR Change.2 Avg..position Change.3
1 socioconstructivisme         603   109%    188     109% 31%       NA           1.3       NA

Et voici un piechart moche pour un peu égayer la lecture....

pie(Database_webmaster$Impressions[1:20], 
    main="EduTechWiki Web Search Piechart", col=rainbow(20),
    labels=Database_webmaster$Query[1:20])
Exemple d'un gateau raté ...

3 Lire un simple fichier texte

Attention: Il important de savoir utiliser les fonctions de base de R. Par contre, il faut aussi se renseigner sur les outils de lecture de sources qui sont disponibles dans les paquets spécialisés comme tm.

3.1 Avec readLines

readLines est une méthode classique pour lire des fichiers texte. Méthodes sure, mais plutôt à déconseiller au profit de fonctions de plus haut niveau ...

Exemples simples:

mon_fichier <- readLines ("fichier.txt")
mon_fichier2 <- readLines ("http://tecfa.unige.ch/welcome.html.en")

Voici un script plus complet:

> setwd ("C:/dks/methodo/R/")
> getwd()
[1] "C:/dks/methodo/R"
> mon_text <- readLines ("./wiki_pospap_text/Assessments.txt")
> length(mon_text)
[1] 58

Le résultat est un vecteur qui contient autant d'élément qu'il y a de lignes dans le fichier. Ce type de lecture est utile si la ligne représente quelque chose (un paragraphe par exemple)

Sinon, cette fonction readLines() permet aussi d'indiquer un encodage et finalement il est possible de mettre un texte entier dans un seul élément avec la fonction stri_flatten (voir ci-dessous).

3.2 La fonction scan

La fonction scan() est assez flexible pour lire plusieurs types de données. Pour lire du texte, on utilisera au moins les deux paramètres file=... et what="character". Dans l'exemple suivant on voit qu'on lit 1517 tokens (mots, nombres, ponctuations...). Par défaut un élément (token) est séparé par un " ", mais on peut définir d'autres caractères.

> mon_text <- scan (file="./wiki_pospap_text/Assessments.txt", what="character")
Read 1517 items
> mon_text
   [1] "contents"                "1"                       "supporting"              "assessment"             
   [5] "using"                   "icts"                    "2"                       "problem"                
   [9] "3"                       "role"                    "of"                      "icts"

4 Lecture de fichiers texte dans une série de strings

Utilisation de fonctions R de base pour lire dans des vecteurs

Cette méthode "readline" marchera avec n'importe quelle page HTML.
library(tm)
library(stringi)
library(proxy)
# le nom du wiki
wiki <- "http://edutechwiki.unige.ch/fr/"
# une liste de noms de pages
titles <- c("STIC:STIC_I_-_exercice_1_(Utopia)", "STIC:STIC I - exercice 1 (Nestor-Pixel)", 
            "STIC:STIC_I_-_exercice_2_(Utopia)",
            "STIC:STIC III (2012)/Module 1",  "STIC:STIC III (2012)/Module 2")

# un vecteur qui contient 5 strings vides ("")
articles <- character(length(titles))

# lecture des contenus des pages wiki. Chaque article se trouvera dans un des string ci-dessous.
for (i in 1:length(titles)) {
    articles[i] <- stri_flatten(readLines(stri_paste(wiki, titles[i])), col = "")
}

# Création d un corpus tm avec les article
docs <- Corpus(VectorSource(articles))