« Importer des données dans R » : différence entre les versions
mAucun résumé des modifications |
|||
(7 versions intermédiaires par 4 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
{{tutoriel | {{tutoriel | ||
|fait_partie_du_cours=Tutoriels R | |fait_partie_du_cours=Analytique et exploration de données | ||
|fait_partie_du_module=Tutoriels R | |||
|pas_afficher_sous-page=Non | |||
|page_precedente=Les données R | |page_precedente=Les données R | ||
|page_suivante=Traitement de données alphanumériques avec R | |page_suivante=Traitement de données alphanumériques avec R | ||
|statut=brouillon | |statut=brouillon | ||
|dernière_modif=2014/11/25 | |dernière_modif=2014/11/25 | ||
|difficulté=intermédiaire | |difficulté=intermédiaire | ||
|voir_aussi=Les données R, Web scraping, Traitement de données alphanumériques avec R, Importer des données avec Tidyverse | |||
|all_pages_module=Non | |||
|cat tutoriels=R | |||
}} | }} | ||
== Introduction == | == Introduction == | ||
Il existe une multitude de | Il existe une multitude de possibilités 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 | * 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 | * 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 standard (listes). | ||
== Lecture de données tabulaires == | == Lecture de données tabulaires == | ||
Ligne 19 : | Ligne 23 : | ||
Les fonctions <code>read.table()</code>, <code>read.csv()</code> et <code>read.csv()</code> permettent de lire et importer des fichiers ''.txt'' et ''.csv''. Le résultat va se trouver dans une structure de type "data frame". | Les fonctions <code>read.table()</code>, <code>read.csv()</code> et <code>read.csv()</code> 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. | Ces trois fonctions sont identiques, mais possèdent d'autres défauts. La syntaxe de <code>read.table()</code> est assez riche est compliquée. Ci-dessous, on indique juste quelques exemples. | ||
R peut directement lire un fichier depuis un URL. | R peut directement lire un fichier depuis un URL. | ||
On peut indiquer source la fonction <code>file.choose()</code>. Cela permet à l'utilisateur de sélectionner un fichier. | On peut indiquer la source avec la fonction <code>file.choose()</code>. Cela permet à l'utilisateur de sélectionner un fichier. | ||
<source lang="matlab" enclose="div"> | <source lang="matlab" enclose="div"> | ||
# Le fichier data.txt est lu | # Le fichier data.txt est lu et stocké dans un nouvel objet R nommé Database | ||
Database <- read.table("data.txt", header = TRUE) | Database <- read.table("data.txt", header = TRUE) | ||
Ligne 32 : | Ligne 36 : | ||
Database <- read.table(file.choose(), header = TRUE, sep = ",") | Database <- read.table(file.choose(), header = TRUE, sep = ",") | ||
# Fichier de type CSV. Le séparateur utilisé dans le fichier | # 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") | 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 | # 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= ",") | Database_webmaster <- read.csv("http://tecfa.unige.ch/guides/R/data/edutechwiki-fr-gw-oct-6-2014.csv", header = TRUE, sep= ",") | ||
Ligne 44 : | Ligne 48 : | ||
</source> | </source> | ||
Visualiser les tableaux: | Visualiser les tableaux : | ||
* Dans RStudio, cliquer sur | * Dans RStudio, cliquer sur la variable (par ex. "Database" ci-dessus) dans le panneau "Environment" | ||
* Sinon, utilisez: summary(DB), dim(Database), etc. | * Sinon, utilisez : summary(DB), dim(Database), etc. | ||
* Pour afficher une colonne | * Pour afficher une colonne ou d'autres détails, utilisez la syntaxe "$" ou "[..]" expliquée dans l'article [[Les données R]] | ||
<source lang="matlab"> | <source lang="matlab"> | ||
Ligne 90 : | Ligne 94 : | ||
</source> | </source> | ||
[[Fichier:Piechart-moche.png|500px|vignette| | [[Fichier:Piechart-moche.png|500px|vignette|none|Exemple d'un gateau raté ...]] | ||
== Lire un simple fichier texte == | |||
Attention : Il est 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 '''''[[Tutoriel tm text mining package|tm]]'''''. | |||
=== Avec readLines === | |||
<code>readLines</code> est une méthode classique pour lire des fichiers texte. Il s'agit d'une méthode sûre, 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 : | |||
<source lang="XML"> | |||
> setwd ("C:/dks/methodo/R/") | |||
> getwd() | |||
[1] "C:/dks/methodo/R" | |||
> mon_text <- readLines ("./wiki_pospap_text/Assessments.txt") | |||
> length(mon_text) | |||
[1] 58 | |||
</source> | |||
Le résultat est un vecteur qui contient autant d'éléments 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 <code> readLines()</code> permet aussi d'indiquer un encodage, et finalement il est possible de mettre un texte entier dans un seul élément avec la fonction <code>stri_flatten</code> (voir ci-dessous). | |||
=== La fonction scan === | |||
La fonction <code>scan()</code> est assez flexible pour lire plusieurs types de données. Pour lire du texte, on utilisera au moins les deux paramètres <code>file=...</code> et <code>what="character"</code>. Dans l'exemple suivant, on voit qu'on lit 1517 tokens (mots, nombres, caractères de ponctuation...). Par défaut, un élément (token) est séparé par un " ", mais on peut également définir d'autres caractères. | |||
<source lang="matlab"> | |||
> 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" | |||
</source> | |||
== 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. | |||
<source lang="matlab"> | |||
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 strings 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)) | |||
</source> | |||
== Importer des données avec Tidyverse == | |||
Il est également possible d'utiliser l'[[Introduction à Tidyverse|écosystème Tidyverse]], une collection de paquets pour effectuer les opérations les plus fréquentes sur des données, pour importer différents types de données. Voir : | |||
{{ Goblock | [[Importer et exporter des données avec Tidyverse]] }} | |||
== Conclusion == | |||
Cette page a proposé un survol de différentes techniques pour importer des données en [[R]]. |
Dernière version du 7 décembre 2022 à 11:46
Analytique et exploration de données | |
---|---|
Module: Tutoriels R | |
◀▬▬▶ | |
⚐ brouillon | ☸ intermédiaire |
⚒ 2022/12/07 | ⚒⚒ 2014/11/25 |
Voir aussi | |
Catégorie: R |
Introduction
Il existe une multitude de possibilités 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 standard (listes).
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 la source avec la fonction file.choose()
. Cela permet à l'utilisateur de sélectionner un fichier.
# Le fichier data.txt est lu et stocké dans un nouvel 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 la variable (par ex. "Database" ci-dessus) dans le panneau "Environment"
- Sinon, utilisez : summary(DB), dim(Database), etc.
- Pour afficher une colonne ou 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])
Lire un simple fichier texte
Attention : Il est 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.
Avec readLines
readLines
est une méthode classique pour lire des fichiers texte. Il s'agit d'une méthode sûre, 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éments 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).
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, caractères de ponctuation...). Par défaut, un élément (token) est séparé par un " ", mais on peut également 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"
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 strings 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))
Importer des données avec Tidyverse
Il est également possible d'utiliser l'écosystème Tidyverse, une collection de paquets pour effectuer les opérations les plus fréquentes sur des données, pour importer différents types de données. Voir :
Conclusion
Cette page a proposé un survol de différentes techniques pour importer des données en R.