Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Chapitre 3 fichiers de données
Programmation en R
2
Introduction # Toute étude statistique concerne des données, et celles-ci se trouvent généralement dans des fichiers de données. # Il nous faut donc apprendre à lire des fichiers de données de formats spécifiques (csv, xlsx (Excel), etc.). # Il nous faut également apprendre à écrire dans des fichiers de format spécifique les analyses ou données modifiées que nous produisons.
3
Répertoires et fichiers
# La première étape est de savoir se placer dans le bon répertoire de travail ainsi que de naviguer d'un répertoire à l'autre. # Pour accéder au répertoire courant, on utilise getwd(). getwd() [1] "/Users/jcabessa/Desktop/MAIN/Courses/R/cours" # Pour changer de répertoire, on utilise setwd("path"), où "path" est le chemin du répertoire en question. setwd("/Users/jcabessa/Desktop/MAIN/Courses/R/tutorials") getwd() # le répertoire courant a bien changé [1] "/Users/jcabessa/Desktop/MAIN/Courses/R/tutorials"
4
Répertoires et fichiers
# Une autre manière très utile de changer de répertoire courant et d'utiliser la fonction setwd(file.choose()). # Cette fonction ouvre une fenêtre qui vous permet de choisir un fichier; ensuite, le répertoire courant est automatiquement changé en celui dans lequel se trouve le fichier que vous avez choisi. setwd(file.choose()) # en choisissant un fichier, on a changé de répertoire courant… getwd() [1] "/Users/jcabessa/Desktop/MAIN/Courses/R/cours"
5
Répertoires et fichiers
# Pour lister les fichiers du répertoire courant, on utilise list.files(). list.files() [1] "Ch1.pptx" "Ch2.pptx" "Ch3.pptx" [4] "Ch4.pptx" "Chapter1.R" "Chapter2.R" [7] "Chapter3.R" "hist1.pdf" "notes.txt" [10] "probability.R” "volcano.pdf" # Il existe bien d'autres fonctions permettant de créer, copier ou effacer des fichiers (de manière récursive aussi). # On verra les plus importantes en cours de route.
6
Écriture dans des fichiers
# Si vous désirez exporter, i.e. écrire, les outputs de vos commandes R dans un fichier (afin de sauvegarder ces données), utiliser les fonctions cat() ou sink(). # Si vous désirez sauvez des objets quelconques dans un fichier, utiliser la fonction save() de paire avec la fonction load(). # Si vous désirez écrire des matrices ou data frames dans des fichiers, utiliser les fonctions write(), write.table(), ou write.cvs(). # Rappel: pour obtenir toute l'info sur une fonction, taper ?nom_fonction.
7
Écriture dans des fichiers
# 1. La fonction cat(): concatenate and print # Cette fonction imprime dans la console, comme print(), mais elle peut également imprimer, i.e. écrire, dans des fichiers si l'argument file = "nom_fichier" est spécifié. cat("Bonjour", TRUE, "\n") # \n signifie "fin de ligne » Bonjour TRUE cat("The answer is", 3, "\n", file = "output.txt") cat("The answer is", 27, "\n", file = "output.txt") # On remarque qu'à chaque appel de cat, le fichier output.txt est automatiquement recrée; les données n'ont donc pas été appondues dans le fichier.
8
Écriture dans des fichiers
# Si le fichier de sortie existe déjà, on utilise l'argument append = TRUE pour appondre les données successives. cat("The answer is", 3, "\n", file = "output.txt") cat("The answer is", 27, "\n", file = "output.txt", append = TRUE) # Maintenant, le fichier output.txt contient deux lignes.
9
Écriture dans des fichiers
# Exemple: # On imprime dans un fichier 10'000 valeurs tirées aléatoirement à partir d'une loi normale de moyenne 1 et déviation standard 2. # Et, comme deuxième colonne, on imprime 10'000 valeurs tirées aléatoirement à partir d'une loi de Poisson de moyenne 1. # Cet exemple fournit un avant goût des boucles "for". # En passant, on présente des commandes de manipulation de fichiers.
10
Écriture dans des fichiers
# On crée le fichier valeurs.txt file.create("valeurs.txt") [1] TRUE # On vérifie que ce fichier existe file.exists("valeurs.txt") # On crée les deux vecteurs de 10'000 nombres tirés aléatoirement. n_data <- rnorm(10000, 1, 2) p_data <- rpois(10000, 1) # On crée le vecteur des noms de lignes noms_lignes <- c() for (i in 1:10000){ noms_lignes[i] <- paste("ligne", i) }
11
Écriture dans des fichiers
# On imprime le tout dans un fichier texte. for (i in 1:10000){ cat(n_data[i], p_data[i], "\n", file = "valeurs.txt", append = TRUE) } # On obtient bien un fichier de 10'000 lignes. # On efface ce fichier file.remove("valeurs.txt") [1] TRUE
12
Écriture dans des fichiers
13
Écriture dans des fichiers
# 2. La fonction sink(): # En tapant sink("nom_fichier"), on redirige tous les outputs de la console dans un fichier spécifique. # En tapant sink(), on revient à une impressions normale dans la console.
14
Écriture dans des fichiers
file.create("valeurs.txt") [1] TRUE sink("valeurs.txt") n_data <- rnorm(10000, 1, 2) p_data <- rpois(10000, 1) for (i in 1:10000){ cat(n_data[i], p_data[i], "\n”) # on utilise cat en mode console } sink() file.remove("valeurs.txt")
15
Écriture dans des fichiers
# 3. Les fonctions save() et load(): # La fonction save() permet de sauvegarder, i.e. d'écrire, des objets R quelconques dans un fichier d'extension RData. file.create("valeurs2.RData") [1] TRUE x <- runif(1000, min = 0, max = 1) y <- list(a = 1, b = TRUE, c = "oops") save(x, y, file = "valeurs2.RData")
16
Écriture dans des fichiers
# La fonction load() permet de loader le fichier d'extension RData. # On a alors de nouveau accès à nos objets x et y. load("valeurs2.RData") x ... # pas imprimé, trop long y file.remove("valeurs2.RData") [1] TRUE
17
Écriture dans des fichiers
# 4. Les fonctions write(), write.table(), write.csv(): # Vous aurez très probablement à écrire des matrices ou des data frames dans des fichiers. # Les fonctions suivantes sont faites pour cela. # La fonction write() est assez générale. # La fonction write.table() concerne principalement les tables de données. # La fonction write.csv() écrit automatiquement dans un fichier au format csv (comma separated values), c'est-à-dire, un format (très utilisé) où les données sont séparées par des virgules.
18
Écriture dans des fichiers
# Exemple: # R contient des data frames prédéfinis. # Par exemple, le data frame swiss contient des données concernant diverses villes de Suisse. # On écrit ces données dans un fichier texte en utilisant write.table(). file.create("swiss.txt") [1] TRUE write.table(swiss, file = "swiss.txt", sep = "\t", eol = "\n", na = "NA", row.names = TRUE, col.names = TRUE) file.remove("swiss.txt")
19
Écriture dans des fichiers
20
Écriture dans des fichiers
# Cette fois, on écrit ces données dans un fichier csv en utilisant write.csv(). file.create("swiss.csv") [1] TRUE write.csv(swiss, file = "swiss.csv") # On obtient un fichier csv, où les données soont séparées par des virgules. # Avec la fonction write.csv(), il est (fortement) recommandé d'ajouter row.names = FALSE, autrement, les noms de lignes deviennent des données... file.remove("swiss.csv")
21
Écriture dans des fichiers
22
Lecture de fichiers # Il est extrêmement utile d'importer, i.e. de lire, des données (en général des tables de données de tailles importantes) qui se trouvent dans des fichiers. # Pour cela, on utilise les fonction read.table(), read.csv(), read.fwf(), etc. # Ces fonctions permettent de lire des tables de données, et, surtout, de les comprendre comme des objets de type "data.frame". # Plus précisément, ces fonctions lisent un fichier texte, contenant une table de données, et retournent un data frame. # On peut alors travailler sur ces données en utilisant tout l'attirail de fonctions concernant les data frames et autre objets de R.
23
Lecture de fichiers # Exemple: # Dans le répertoire de cours, le fichier diamonds.txt contient les informations de 53'900 diamants. Les données sont séparées par des espaces. # On va importer, i.e. lire, les données de ce fichier, les modifier légèrement, et les réenregistrer, i.e. les récrire, dans un fichier.
24
Lecture de fichiers # 1. La fonction read.table(): # Lorsqu'on lit un fichier, il faut (toujours) affecter le résultat de cette lecture à une variable, afin de pouvoir manipuler ces données. diamonds_df <- read.table("diamonds.txt", header = TRUE, sep = " ", quote = "\"'", na.strings = "NA") # visualisation du début des données head(diamonds_df) carat cut color clarity depth table price x Ideal E SI Premium E SI class(diamonds_df) [1] "data.frame"
25
Lecture de fichiers # On imprime le prix des diamants en fonction de leur carat. library(ggplot2) # libairie graphique (cf. suite cours) qplot(carat, price, data = diamonds_df, main = "Prix vs Carat - graphique 1") # cf. next slide # On ne considère que les diamants de coupe idéale. # Ceci revient à supprimer les autre lignes. # On utilise la fameuse fonction subset(), avec l'argument subset pour sélectionner les lignes. diamonds_df2 <- subset(diamonds_df, subset = (cut == "Ideal")) # On imprime le prix en fonction du carat. qplot(carat, price, data = diamonds_df2, main = "Prix vs Carat - graphique 2") # cf. next slides
26
Lecture de fichiers
27
Lecture de fichiers
28
Lecture de fichiers # On supprime maintenant les colonnes "clarity" et "table". # On utilise la fameuse fonction subset() avec l'argument select pour sélectionner les colonnes. diamonds_df3 <- subset(diamonds_df, select = colnames(diamonds_df)[c(-4, - 6)]) head(diamonds_df3) carat cut color depth price x y z Ideal E Premium E Good E # On réenregistre ces données dans un fichier diamonds2 au format csv. write.csv(diamonds_df3, file = "diamonds2.csv“, row.names = FALSE)
29
Lecture de fichiers # 2. La fonction read.csv(): # On peut maintenant réimporter les données csv que nous venons d'enregistrer grâce à la fonction read.csv(). diamonds_df3 <- read.csv("diamonds2.csv") head(diamonds_df3) carat cut color depth price x y z Ideal E Premium E Good E Premium I Good J Very Good J # On réobtient bien le data frame du fichier diamonds2.csv, compris comme un data frame.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.