TP2 Importation et exportation de données - Outils graphiques Exercice I. Enregistrer des données au format R mat = 1. Créer la matrice suivante: [,1] [,2] [,3] [,4] [,5] [1,] 1 6 11 16 21 [2,] 2 7 12 17 22 [3,] 3 8 13 18 23 [4,] 4 9 14 19 24 [5,] 5 10 15 20 25 2. Sauver mat sous le nom de matrice.txt à une adresse valide. Que remarquez-vous? 3. Ajouter des arguments à la commande précédente pour retirer des noms aux lignes et aux colonnes du fichier crée. Exercice II. Création de data.frame 1. Créer la data.frame suivante: 2. À partir des variables name et iveau, créer un tableau de contingence nommé tab_nn 3. Afficher les noms des dimensions de tab_nn 4. Changer name en nom, Giorgio en George et John en Jean dans tab_nn 5. Créer un array de dimensions 4 x 3 x 2 avec les premier 24 nombres entiers. Nommer le dimensions a1.. a4, b1.. b3 et c1, c2 Exercice II. Importation/exportation de fichier.txt 1. Importer dans un objet nommé A le jeu de donné nommé auto2004.txt 2. Importer dans un objet nommé B le jeu de donnée auto2004_nocolname.txt 3. Importer dans un objet nommé C le jeu de donnée auto2004_virg.txt
4. Importer dans un objet nommé D le jeu de donnée auto2004_na.txt 5. Importer dans un objet nommé E le jeu de donnée auto2004_na9.txt 6. Importer dans un objet nommé F le jeu de donnée auto2004_f.txt 7. Importer dans un objet nommé G le jeu de donnée auto2004_s.txt 8. Quel est le mode des objets créer par la fonction read.table( )? 9. Sauvegarder la data.frame A au format.txt sous le nom auto.txt 10. Sauver les objets présents en mémoire à l adresse /Outputs/Donnees.Rdata 11. Sauver sous le nom «don.rdata» les objets disponibles en mémoire à l adresse "/Outputs" en utilisant la commande setwd() 12. Effacer tous les objets en mémoire en utilisant la fonction rm() 13. Charger les fichiers sauvegardés en question 10. 14. Restaurer le répertoire de travaille original. Exercice IV. Gestion des fenêtres graphiques 1. Créer 3 fenêtres graphiques vierges 2. Activer la deuxième fenêtre crée 3. Créer la partition suivante : 4. Activer la troisième fenêtre crée Exercice V. Utilisation de la fonction plot() 1. Créer une matrice, mat1, composée de 100 lignes et deux colonnes; chacune des colonnes de loi normale centrée et de variance 1. 2. Créer une matrice, mat2, composée de 100 lignes et deux colonnes; chacune des colonnes de loi normale de moyenne 1 et de variance 1. 3. Tracer le graphe bivarié de la première colonne de mat1 sur la deuxième colonne de mat1 4. Ajouter au graphe précédent (avec une couleur différente ; pour connaître la liste des couleurs disponible, tapez la commande colors()) les points du graphe bivarié de la première colonne de mat2 sur la deuxième colonne de mat2. Que constatez-vous?
5. Rectifier les problèmes que vous constatez à la question 4. Exercice VI : Iris de Fisher Dans le package datasets est disponible la data.frame iris. 1. Convertir le jeu de données iris en une matrice nommée matrice_iris 2. Tapez la commande plot(matrice_iris). Que construit la fonction plot() dans le cadre des matrices? 3. Construire le graphique composé de tous les graphiques bivariés du jeu de données Iris (à partir de matrice_iris). 4. Construire le même graphique à partir de la data.frame iris 5. Faire un graphique esthétique de la dataframe iris (couleur, titre, forme, labels, etc ) 6. Sauvegarder la figure au format.pdf 7. Dessiner un box-plot de la variable Sepal.Length pour chaque espèce Exercice VII : Survey Dataset 1. Charger le package MASS 2. Dessiner un joli histogramme pour la variable Pulse du dataset Survey 3. Installer et charger le package Lattice 4. Dessiner un graphique avec les densités estimées de la variable Pulse conditionnées aux modalités de la variable Smoke
Correction de l exercice I 1. matrice<-matrix(1:25, 5, 5) 2. write.table(matrice, 'Outputs/matrice.txt') On remarque que par défaut les lignes et les colonnes sont nommées 3. write.table(matrice, 'Outputs/matrice.txt', row.names = F, col.names = F) Correction de l exercice II 1. name = scan(what="character") 1: Giorgio Laura Marie Luc John # Rappel: taper deux fois Enter pour passer à la variable suivante. age = scan() 1: 21 18 18 24 20 taille = scan() 1: 190 167 164 166 172 poids = scan() 1: 90 56 68 78 82 nat = scan(what="character") 1: Ita Ita Fra Fra USA niveau = scan(what="character") 1: Lic2 Lic3 Mr1 Mr2 Mr1 ave = scan() 1: 15 16.4 17.1 14.5 16 etudiants = data.frame(name, age, taille, poids, nat, niveau, ave) 2. tab_nn <- table(name, niveau) 3. dimnames(tab_nn) = list(nom = c("george","jean", "Laura", "Luc", "Marie"), niveau = c("lic2", "Lic3", "Mr1", "Mr2" )) 4. array.gio <- array(1:24, dim=c(4,3,2)) Correction de l exercice III 1. A = read.table('datasets/auto2004.txt',row.names=1, header = TRUE, sep = '\t') 2. B = read.table('datasets/auto2004_nocolname.txt', row.names=1, sep = '\t') 3. C = read.table('datasets/auto2004_virg.txt', row.names=1,header = TRUE, sep = '\t', dec = ",") 4. D = read.table('datasets/auto2004_na.txt', row.names=1, header = TRUE, sep = '\t') 5. E = read.table('datasets/auto2004_na9.txt', row.names=1, header = TRUE, sep = '\t', na.strings = 99999) 6. F = read.table('datasets/auto2004_f.txt', row.names=1, header = TRUE, sep = '\t', fill = TRUE) 7. G = read.table('datasets/auto2004_s.txt', row.names=1, header = TRUE, sep = '\t', skip = 4) 8. Le mode des objets crées par la fonction read.table est la data.frame: class(a) 9. write.table(a,"outputs/auto.txt") 10. save(list = ls(), file = "Outputs/donnees.Rdata") 11. # La fonction getwd() renvoie le chemin de sauvegarde lorsque rien n est spécifié. On peut modifier le chemin par défaut grâce à la fonction setwd() : setwd("outputs") save.image(file="outputs/don.rdata") 12. rm(list = ls()) 13. load("outputs/donnees.rdata") 14. setwd("/users/giorgio/desktop/lezioni universita /CNAM/STA115/docs for R/corsoGio")
Correction de l exercice IV 1. quartz() ;quartz() ;quartz() ; # Windows x11() ; x11() ; x11() 2. dev.set(2) 3. mat = matrix(c(1, 2, 2, 3, 3, 4), 3, 2) layout(mat) layout.show(4) 4. dev.set(3) Correction de l exercice V 1. mat1 = matrix(rnorm(200, mean = 0, sd = 1), 100, 2) 2. mat2 = matrix(rnorm(200, mean = 1, sd = 1), 100, 2) 3. plot(mat1) 4. plot(mat1, col = "blue") points(mat2, col = "red") On constate que les points de mat2 ne sont affichés que dans le graphique définit par les bornes de mat1. 5. PREMIERE SOLUTION : Utilisation des arguments xlim et ylim pour contourner cette problématique. mat = rbind(mat1, mat2) plot(mat1, col = "blue", xlim = range(mat[,1]), ylim = range(mat[,2]), main = "représentation d'un nuage de points", xlab = "X1", ylab = "X2" ) points(mat2, col = "red") DEUXIEME SOLUTION (sans passer par xlim et ylim) mat = rbind(mat1, mat2) plot(mat, col = c("red", "blue")[c(rep(1, 100), rep(2, 100))]) Correction de l exercice VI 1. matrice_iris = as.matrix(iris[, 1:4]) 2. Dans le cadre de matrices la fonction plot() trace le graphe de la première colonne de la matrice sur la deuxième. 3. pairs(matrice_iris[,1:4]) 4. On constate que dans le cadre des data.frame la fonction plot trace toutes les combinaisons possible de graphes bivariés. 5. Par exemple : plot(iris[,1:4], bg = c("red", "green3","blue")[iris[,5]], pch = c(21, 25, 24)[iris[,5]], main = "Iris de Fisher", labels = c("longueur\nsepale", "Largeur\nSepale", "Longueur\nPetale", "Largeur\nPetale" ) ) Regarder avec attention les arguments associés à bg et pch. Vous pouvez par exemple éxecuter les commandes suivantes : c("red", "green3","blue")[iris[,5]],
c(21, 25, 24)[iris[,5]] 6. pdf( iris.pdf ) #pour pc dev.off() #pour pouvoir ouvrir le fichier crée. quartz.save(file='outputs/iris.pdf',type='pdf') # pour mac 7. boxplot(iris$sepal.length~iris[[5]], col = c("lightpink","red", "lightblue"), ylab = "Sepal Length", main = paste("length of the Sepals")) Correction de l exercice VII 1. library(mass) 2. data(survey) summary(survey$pulse) summary(survey$pulse) hist(survey$pulse, breaks = seq(from = 35, to = 104, length = 20), col = "pink", border = "darkblue", main = paste("pulse de", nrow(survey), " étudiants"), xlab = "Battements", ylab = "densité", proba = TRUE, labels = TRUE, ylim = c(0, 0.06)) dst = density(survey$pulse, na.rm = TRUE, adjust = 1) lines(dst$x, dst$y, lwd = 1.5, col='darkblue') mtext("l histogramme le plus beau\nc est le mien!!", line = -2) 3. install.packages("lattice") library(lattice) 4. densityplot(~survey$pulse survey$smoke, xlab = "nombre de Battements", col = "red")