TP n 1: Premiers pas sous R



Documents pareils
R01 Import de données

Gestion des données avec R

Introduction à MATLAB R

Lire ; Compter ; Tester... avec R

Cours 1. I- Généralités sur R II- Les fonctions de R et autres objets III-Les vecteurs

SEMIN. Données sous R : stockage et échange. Julio PEDRAZA ACOSTA

Algorithmique et Programmation, IMA

Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011

LES TYPES DE DONNÉES DU LANGAGE PASCAL

1 Introduction - Qu est-ce que le logiciel R?

TP 1. Prise en main du langage Python

STAGE IREM 0- Premiers pas en Python

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Tests statistiques et régressions logistiques sous R, avec prise en compte des plans d échantillonnage complexes

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Aide-mémoire de statistique appliquée à la biologie

Les concepts de base, l organisation des données

Module 16 : Les fonctions de recherche et de référence

Algorithmique et programmation : les bases (VBA) Corrigé

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Initiation au logiciel R

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Initiation à la Programmation en Logique avec SISCtus Prolog

Introduction aux Statistiques et à l utilisation du logiciel R

SAS de base : gestion des données et procédures élémentaires

Présentation du langage et premières fonctions

Cours 7 : Utilisation de modules sous python

Compléments de documentation Scilab : affichage de texte et formatage de nombres

Package TestsFaciles

Leslie REGAD ; Gaëlle LELANDAIS. leslie.regad@univ- paris- diderot.fr ; gaelle.lelandais@univ- paris- diderot.fr

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Maple: premiers calculs et premières applications

1 Recherche en table par balayage

Programmation Web. Madalina Croitoru IUT Montpellier

Annexe commune aux séries ES, L et S : boîtes et quantiles

INTRODUCTION AU LOGICIEL R

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Utilisation d objets : String et ArrayList

Conventions d écriture et outils de mise au point

Découverte du tableur CellSheet

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

MANIPULATION ET VISUALISATION DE GROSSES BASES DE DONNÉES AVEC R

données en connaissance et en actions?

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet


EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

EXCEL TUTORIEL 2012/2013

Le Langage SQL version Oracle

Tp 1 correction. Structures de données (IF2)

Introduction à la statistique non paramétrique

Puissances d un nombre relatif

td3a correction session7az

Partie 1. Fonctions plus complexes dans Excel. Fonctions Si(), Et(), Ou() et fonctions imbriquées. Opérateurs logiques. I.1.

Séance 0 : Linux + Octave : le compromis idéal

TD3: tableaux avancées, première classe et chaînes

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Premiers Pas en Programmation Objet : les Classes et les Objets

Formulaire de candidature pour les bourses de mobilité internationale niveau Master/ Application Form for International Master Scholarship Programme

Pascal Weber - Expert en organisation

Androïd Manuel d installation MB PRO LIGHT Préalable. Définitions

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Université Ibn Zohr Excel Résume de cours

FORMATION EXCEL NIVEAU 2

IDENTITÉ DE L ÉTUDIANT / APPLICANT INFORMATION

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Initiation à LabView : Les exemples d applications :

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Localisation des fonctions

SOFI Gestion+ Version 5.4. Echanges de données informatiques Spicers Sofi gestion+ Groupements. SOFI Informatique. Actualisé le

TP2 DE BUSINESS INTELLIGENCE ISIMA ZZ3 F3

Simulation de variables aléatoires

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Chapitre 2 Le problème de l unicité des solutions

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

COURS DE MS EXCEL 2010

Le langage SQL Rappels

CREG : versailles.fr/spip.php?article803

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Utilitaires méconnus de StrataFrame

MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA

fichier EDIFACT qui peut être transféré à la BNB par .

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

AIDE FINANCIÈRE POUR ATHLÈTES FINANCIAL ASSISTANCE FOR ATHLETES

Document de spécification du logiciel VALPO Définition du format des fichiers des

2 Comment fonctionne un ordinateur, dans les grandes lignes

Résolution de systèmes linéaires par des méthodes directes

A.-M. Cubat PMB - Import de notices à partir d un tableur Page 1 Source :

Chapitre VI- La validation de la composition.

Bases de programmation. Cours 5. Structurer les données

Chap III : Les tableaux

Cours Informatique Master STEP

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

FEN FICHE EMPLOIS NUISANCES

Ricco Rakotomalala R.R. Université Lyon 2

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

GUIDE UTILISATEUR ENVOYEZ ET RECEVEZ VOS SMS PAR

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Créer et modifier un fichier d'import des coordonnées approximatives avec Excel

Transcription:

TP n 1: Premiers pas sous R Pascal Bessonneau October 26, 2009 1 Partie 1: Types de base, affectation et valeurs spéciales Création d un vecteur numérique simple c(1,2) Création d un vecteur de booléen c( T, F) Conversion implicite du booléen en numérique. Les processus de conversion implicites dans R sont fréquents et sont source de bugs. c( T, F) + 0 Création d un vecteur de character. c("h","f") L appel à la fonction factor permet de définir des facteurs. Ils sont utiles pour définir des vecteurs dont les modalités sont restreintes. factor(c("h","f")) Dans ce cas on définit avec l argument levels une modalité supplémentaire. Sinon R utilise les modalités présente dans le vecteur avec la commande sort(unique(variable)) (a <- factor(c("h","f"),levels=c("h","f","a")) table(a) Dans ce cas les vecteurs sont ordonnés. C est très important pour certaines analyses et/ou pour obtenir les tableaux de contingence avec ordre précis. a <- c("tanche","moyen","bon", "excellent") factor( a, levels=c(a), ordered=t ) Un tableau de vérité en utilisant l opérateur ET (&) c( T & T, F & T, F & F ) 1

Un tableau de vérité en utilisant l opérateur OU ( ) c( T T, F T, F F ) Les comparaisons avec des valeurs NA sont délicates. Elles peuvent lever des erreurs mais également renvoyer NA contre T ou F contre F. c( NA & T, NA & F ) if ( NA & T ) print("plouf") Pour vérifier qu une valeur est NA ou NULL il faut utiliser les fonctions is.na() ou is.null(). c( is.na(na) & T, is.na(na) & F ) Le même tableau de vérité avec la fonction adapté pour les NA. c(!is.na(na) T,!is.na(NA) F ) Idem avec is.null() c( NULL & T, NULL & F ) L affectation simple peut se faire avec deux opérateurs. Il est à noter que contrairement à d autres langages, R ne réponds pas vrai ou faux si l affectation a été possible mais la valeur de l affectation. C est ce qui peut être vu en demandant à R d écrire la valeur de l affectation en la transformant en expression avec les parenthèses. a <- 5 (a<-5) 6 -> a a L affectation dans l autre sens. Idem que précedement. dans a. L affectation est évaluée et le résultat est stocké a <- b <- 8 a;b Anecdotique pour certains, la fonction invisible() est importante à connaître. En effet elle est utilisée dans de nombreuses fonctions R. Alors qu une fonction est appelée sans affectation ne renvoit rien, si on utilise une affectation on obtient un résultat dans la variable. C est primordial si l on veut faire des graphiques propres. invisible(9) a <- invisible(9) a 2

R permet d attribuer une valeur à une variable ou un mot-clef sans avertissement. Cela peut poser problème. On peut le résoudre en supprimant l objet par la commande rm(). Elle procède à l envers en supprimant la variable la plus proche. Le même fonctionnement est utilisé pour les variables locales dans les fonctions. table table <- 6 table rm(table) table 2 Partie 2: vecteurs et types On crée un vecteur de valeurs tirées dans une loi binomiale: dix essais avec une probabilité de 0,5 de succès à chaque essai. a <- rbinom( 1000, 10, 0.5 ) a Résumé numérique de la fonction. La fonction summary() donne un résumé adapté à la nature des variables. summary(a) La comparaion a < 5 fournit un vecteur de booléen. Celui-ci est utilisé pour indexer le vecteur. Les positions correspondantes à vrai sont donc renvoyées. a[a>5] Le même exercice est fait. On insiste ici sur le fait que la longueur du vecteur obtenu correspond au nombre de valeurs TRUE. length(a>5) table(a>5) length(a[a>5]) Ici on utilise l opérateur de division entière pour sélectionner les nombres pairs. a[a%%2==0] length(a[a%%2==0]) table(a[a%%2==0]) Le même exercice avec une loi normale. a <- rnorm(1000) table(a>0) La fonction plot() avec un seul argument équivaut à appeler la fonction plot(1:length(a),a). 3

plot(a) Pour faire l histogramme. hist(a) La fonction renvoie les positions telles que les valeurs a[order(a)] soient en ordre croissantes. La fonction sort renvoie quant à elle le vecteur ordonné. b <- order(a) b range(b) a[b] On obtient le vecteur avec des valeurs croissantes. a. Avec cette procédure on obtient approximativement le premier quartile de c <- a[b][seq(1,length(a)*0.25,1)] range(c) quantile(a) La fonction sample() permet de tirer au hasard des élements tirés d un vecteur donné. Il le fait sans remise. Par ce biais on crée un vecteur de longueur 2000 mélangeant deux lois normale de paramètres différents. a <- c( rnorm(1000), rnorm(1000,3) ) a <- a[sample(1:2000,2000)] Si l histogramme on a un premier aperçu de la distribution. hist(a) En changeant le nombre de colonnes on a un meilleur aperçu de la distribution. Mais la fonction density() permet une meilleure approximation de la distribution mais elle est plus complexe à interpréter. hist(a,breaks=25,freq=f) lines(density(a),col="red") La fonction table permet de réaliser des tableaux de contingences. a <- c( rep("homme",1000), rep("femme",1000) ) table(a) table(a[a=="homme"]) Soit une pièce à deux faces (0,1) on lance 1000 fois la pièce. a <- c(0,1) b <- sample( a, 1000, replace=t) 4

Le tableau de contingence correspondant: b[b==0] <- F table(b) On tranforme la variable numérique en booléen c <- rep( NA, 1000 ) c[b==1] <- T c[b==0] <- F table(c) La même transformation avec la fonction conditionnelle ifelse(). Le premier argument est un vecteur de booléen, le second une expression à réaliser pour les valeurs vraie et le dernier pour les valeurs fausses. d <- ifelse(b==0,f,t) table(d) Idem que précedemment. A noter la conversion implicite du booléen vers un numérique. a <- sample( c(t,f), 1000, replace=t ) table( a + 0 ) On crée un facteur de longueur 1000 contenant aléatoirement Hommes, Femmes ou des valeurs manquantes. a <- b <- c <- as.factor( sample( c("h","f",na), 1000, replace=t ) ) On regarde le tableau de contingence. A noter que les valeurs manquantes par défaut n apparaisse pas. Pour les avoir il faut modifier le paramètre na.omit de la fonction table(). On peut voir ensuite une conversion explicite entre des facteurs et des entiers. table(a) table(as.numeric(a)) Ici on manipule les facteurs comme des entiers en utilisant une conversion implicite. b[b==1] <- "H" table(b) Idem. que précedemment b[b+0==1] <- "H" Idem que précedemment de façon explicite. b[as.numeric(b)==1] <- "H" 5

On essaie de changer les valeurs manquantes pour A. Mais n étant pas une des modalités possibles l affectation n est pas possible. b[is.na(b)] <- "A" Pour récupérer sous forme d un vecteur character les différents niveaux d un facteur. levels(a) On ajoute A comme modalité. L affectation devient possible. c <- factor( c, levels=c(levels(a),"a") ) c[is.na(c)] <- "A" table(c) Autre variante pour ajouter une modalité. On passe par le biais d un vecteur character. d <- as.character(a) d[is.na(d)] <- "A" d <- factor(d) table(d) 3 Partie 3: data.frame Données d exemple de R du package de base, on peut accéder à iris une data.frame. iris La fonction head permet d afficher les 6 (ou plus) premières lignes ce qui donne un aperçu du fichier. head(iris) La fonction summary donne un aperçu des données: nombre de facteur, quantiles,... En fonction du type de la colonne. summary(iris) Plus précis que la fonction précédente la fonction str() permet d avoir une description précise de l objet. Cette fonction est capitale car elle peut être utilisée sur tout objet R. En en-tête on a le type d objet: ici une data.frame de 150 lignes pour 5 colonnes. Le dollar à chaque ligne indique qu on peut accéder à la variable dont le nom suit par son nom. Après chaque nom de variable on a le type de variable: numérique pour les 4 premières puis un facteur de 3 modalités. str(iris) On accède à la variable Sepal.Length. 6

iris$sepal.length Ainsi séparé de la data.frame, on obtient un vecteur de numérique (car c est le type de la variable dans la data.frame). is.numeric(iris$sepal.length) On fait l histogramme et on regarde la densité. hist(iris$sepal.length,freq=f) lines(density(iris$sepal.length),col="red") On visualise la structure d une partie de la data.frame en sélectionnant les colonnes par leurs noms. str(iris[,c("sepal.length","petal.length")]) On visualise la structure d une partie de la data.frame en sélectionnant les colonnes par leurs numéros. str(iris[,1:4]) On visulaise les 6 premières lignes de la data.frame. iris[1:6,] Pour récupérer ou affecter les noms aux colonnes, on utilise la fonction colnames(). colnames(iris) Ici on voit un exemple de changement de nom des colonnes. str(iris) colnames(iris) <- c("longueursepal","largeursepal","longueurpetale","largeurpetale","espe str(iris) On visualise les noms des lignes (ou individus). rownames(iris) On affecte ici des noms aux individus. On utilise la fonction paste pour concatener deux variables textes. La fonction sprintf permet comme en C de formater des nombres. Ici il y a trois chiffres complétés par des zéros en têtes si nécessaires. rownames(iris) rownames(iris) <- paste( iris$species, sprintf("%03d",1:100), sep="" ) rownames(iris) Les variables ne sont accessibles qu en préfixant par le nom de la data.frame. La fonction with permet pour l instruction contenu dans le deuxième argument de ne pas préfixer par le nom de la data.frame. 7

table(species) table(iris$species) with(iris, table(species) ) Ici on crée une data.frame et on rajoute une variable y (corrélée à x ici). a <- data.frame( id=1:1000, x=rnorm(1000) ) str(a) a$y <- a$x*0.5+sqrt(1-0.5)*rnorm(1000) str(a) On utilise la fonction with pour créer un graphique de y en fonction de x et tracer la droite de régression. with( a, plot(x,y) ) abline(lm(y ~ x, data=a),col="red") Ici un exemple d indexation d une data.frame par une matrice de booléen. Toutes les cellules supérieurs à 0 reçoivent TRUE puis celles qui ne sont pas à TRUE reçoivent FALSE. Les variables étant numériques il y a une conversion implicite vers des numériques. df <- data.frame( a=rnorm(1000), b=rnorm(1000), c=rnorm(1000), d=rnorm(1000) ) df[df>0] <- T df[df!=t] <- F summary(df) Dans ce cas on change le type vers un type booléen. df$a <- as.logical(df$a) df$b <- as.logical(df$b) summary(df) La fonction attach met la data.frame dans l environnement et donc de ne plus préfixer par le nom de la data.frame pour accéder aux variables. attach(iris) plot(sepal.length,petal.length) La fonction detach() fait l inverse. detach(iris) plot(sepal.length,petal.length) 8

La fonction dim donne les dimensions de la data.frame sous forme d un vecteur numérique avec en premier le nombre de lignes et en second le nombre de colonnes. Les fonctions nrow et ncol permettent d accéder aux dimensions séparement. dim(iris) ncol(iris);nrow(iris) Pour supprimer une colonne d une data.frame il suffit d y affecter la valeur NULL. iris$sepal.length <- NULL str(iris) 4 Partie 4: Chargement et sauvegarde des objets La fonction read.table est la principale commande qui sera étudiée pour charger des fichiers. Elle permet de lire un fichier texte avec les valeurs séparés par un caractère. Elle est pratique car elle permet de reconnaître automatiquement le type de variables contrairement à la fonction scan de plus bas niveau. Il existe plusieurs alias pour cette commande qui ne varie que par par les valeurs par défaut. Dans le premier exemple, on utilise la fonction par défaut avec comme séparateur des tabulations et des points pour les décimales. La première ligne ne contient pas les noms des colonnes que l on définit dans un deuxième temps. # Wagner, Compas et Howell (1988) [Wagn1988] ont étudié la relation entre le stress et la # Le tableau contient les données concernant les mesures de stress et des sympt^omes. thc <- read.table("thc.txt") colnames(thc) <- c( "stress", "symptomes" ) Le séparateur est ici un caractère dièse et on saute la première ligne qui sont des commentaires. # Waiting time between eruptions and the duration of the eruption for the Old Faithful ge geyser <- read.table(file="geyser.txt", sep="#", skip=1 ) head(geyser) Ici c est un format proche du format CSV français. Le séparateur est un point-virgule mais les décimales sont séparées par des points. # Demographic Data: Population by year, methods and countries / United Nations Data pop <- read.table( file="population.txt", sep=";", dec=".", header=t 9

) str(pop) head(pop) Ici c est un format CSV français avec des points-virgules et des virgules comme séparateur de décimales. # Life expectancy at birth, males (years) life <- read.csv2("life.txt") Au format anglais: les virgules sont des séparateurs de champs et les points les séparateurs de décimales. # Schools that provided life skills-based HIV education in the last academic year / Unite schools <- read.csv("schools.txt") Par comparaison sur la taille des fichiers au format R et au format texte. (load(gvhd10.rdata)) # 1,5Mo gv <- read.csv(file="gvhd10.txt",skip=4) # 9.5 Mo Ici un fichier CSV anglais. # Maunga Whau (Mt Eden) is one of about 50 volcanos in the Auckland volcanic field. This volcano <- read.csv("volcano.txt") filled.contour(as.matrix(volcano[,-1]), color.palette = terrain.colors, asp = 1) Via Excel on sauvegarde le fichier au format CSV. Selon la nationalisation il faut utiliser read.csv ou read.csv2. # Reasons for Taking First Postdoctoral Appointment, by Field of Doctrate, 1997?read.table -> postdoc.xls On peut également sauvegarder le fichier Excel au format texte en utilisant comme séparateur des tabulations. # This is an updated and expanded version of the mammals sleep dataset. Updated sleep tim? read.table -> msleep.xls 10