Chapitre 2 Les objets R
On commencera par créer un répertoire dans lequel on mettra tous les fichiers du tutoriel. On pourra créer un projet avec Rstudio dans lequel on placera ces fichiers (File -> New Project…). Par défaut, le répertoire de travail se situera dans le répertoire de ce projet. On peut le vérifier avec la commande
La commande setwd permet de changer le répertoire de travail si besoin. On peut aussi le faire en utilisant le menu Session -> Set Working directory -> Choose directory….
2.1 Création d’objets
2.1.1 Numérique
On crée un objet R en assignant une valeur (ou un caractère, vecteur…) avec les opérateurs <-
, ->
, =
2.1.2 Caractère
Les chaines de caractères sont définies avec des guillemets : "chaine"
, par exemple
2.1.3 Facteur
L’objet facteur est très utile pour travailler avec des variables qualitatives. Cet objet permet d’identifier les modalités prisent par la variable et de travailler dessus, en changeant par exemple le nom d’une modalité :
V1 <- factor(c("less20years","more50years","less20years","more50years","less20years"))
V1
[1] less20years more50years less20years more50years
[5] less20years
Levels: less20years more50years
levels(V1)
[1] "less20years" "more50years"
levels(V1) <- c("Young","Old")
V1
[1] Young Old Young Old Young
Levels: Young Old
2.2 Vecteur
On peut définir un vecteur de plusieurs façons :
fonction collect
c
opérateur séquence
:
fonction séquence
seq
fonction
rep
On peut aussi créer des vecteurs caractère ou logique
x <- c("A","B","C")
x <- rep("A",5)
paste("X",1:5,sep="-")
[1] "X-1" "X-2" "X-3" "X-4" "X-5"
substr("statistician",5,9)
[1] "istic"
2.2.1 Sélectionner une partie d’un vecteur
La sélection s’effectue à l’aide de crochets [ ]
2.2.2 Opérations sur les vecteurs
On peut facilement additionner, multiplier des vecteurs :
x <- seq(-10,10,by=2)
y <- 1:length(x)
x+y
[1] -9 -6 -3 0 3 6 9 12 15 18 21
x*y
[1] -10 -16 -18 -16 -10 0 14 32 54 80 110
z <- x>0
x*z
[1] 0 0 0 0 0 0 2 4 6 8 10
Calculer la moyenne, la somme, la médiane et la variance du vecteur (1,3,8,9,11).
Créer les vecteurs suivants en utilisant la fonction rep.
Créer le vecteur suivant à l’aide de la fonction paste.
letters
est un vecteur qui contient les 26 lettres de l’alphabet.Trouver le numéro de la lettre \(q\) (sans compter “avec les doigts” !). On pourra utiliser la fonction which.
Créer le vecteur “a1”,“b2”,\(\dots\) jusqu’à \(q\) et son index.
2.3 Matrices
La fonction matrix permet de définir des matrices.
m <- matrix(1:4,ncol=2)
m
[,1] [,2]
[1,] 1 3
[2,] 2 4
m <- matrix(1:4,nrow=2)
m
[,1] [,2]
[1,] 1 3
[2,] 2 4
m <- matrix(1:4,nrow=2,byrow=TRUE)
dim(m)
[1] 2 2
La position d’un élément dans une matrice est indiquée par ses numéros de ligne et de colonne. Ainsi, pour sélectionner le terme de la 2ème ligne et la 1ère colonne, on utilisera
On peut aussi extraire des lignes et des colonnes :
Il n’est pas difficile de faire les calculs usuels sur les matrices :
det(m) #déterminant
[1] -2
solve(m) #inverse
[,1] [,2]
[1,] -2.0 1.0
[2,] 1.5 -0.5
t(m) #transposé
[,1] [,2]
[1,] 1 3
[2,] 2 4
n <- matrix(5:8,nrow=2)
m+n
[,1] [,2]
[1,] 6 9
[2,] 9 12
m*n #attention : produit de Hadamart
[,1] [,2]
[1,] 5 14
[2,] 18 32
m%*%n #Produit matriciel
[,1] [,2]
[1,] 17 23
[2,] 39 53
eigen(m) #Décomposition en valeurs propres
eigen() decomposition
$values
[1] 5.3722813 -0.3722813
$vectors
[,1] [,2]
[1,] -0.4159736 -0.8245648
[2,] -0.9093767 0.5657675
2.4 Listes
Une liste est un objet hétérogène. Elle permet de stocker des objets de différents modes dans un même objet. Par exemple, on peut céer une liste qui contient un vecteur et une matrice à l’aide de
mylist <- list(vector=rep(1:5),mat=matrix(1:8,nrow=2))
mylist
$vector
[1] 1 2 3 4 5
$mat
[,1] [,2] [,3] [,4]
[1,] 1 3 5 7
[2,] 2 4 6 8
length(mylist)
[1] 2
L’extraction s’effectue en indiquant la position de l’objet à extraire dans un double crochet [[ ]]
:
On peut aussi utiliser le nom de l’élément à extraire :
2.5 Dataframe
Les dataframes sont des listes particulières dont les composantes ont la même longueur, mais potentiellement des modes différents. C’est l’objet généralement utilisé pour les tableaux de données (qui contiennent souvent des variables quantitatives et qualitatives). Par exemple,
name <- c("Paul","Mary","Steven","Charlotte","Peter")
sex <- factor(c("M","F","M","F","M"))
size <- c(180,165,168,170,175)
data <- data.frame(name,sex,size)
summary(data)
name sex size
Length:5 F:2 Min. :165.0
Class :character M:3 1st Qu.:168.0
Mode :character Median :170.0
Mean :171.6
3rd Qu.:175.0
Max. :180.0
On observe que name
est un vecteur de caractères, sex
un facteur et size
un vecteur numérique.
L’extraction est similaire aux matrices et aux listes :
2.6 Quelques fonctions importantes
summary produit un résumé d’un objet
mean, sum, median, var, min, max… (facile à comprendre)
sort, order
apply applique une fonction f aux lignes ou colonnes d’une matrice ou dataframe
2.7 Exercices complémentaires
Créer la matrice suivante que l’on appellera mat (on pourra utiliser les fonctions
rownames
etcolnames
) :column 1 column 2 column 3 column 4 row-1 1 5 5 0 row-2 0 5 6 1 row-3 3 0 3 3 row-4 4 4 4 2 Créer un vecteur qui contient la diagonal de mat.
Créer une matrice qui contient les 2 premières lignes de mat.
Créer une matrice qui contient les 2 dernières colonnes de mat.
Calculer le déterminant et l’inverse de mat.
On considère le jeu de données iris disponible dans R :
data(iris)
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
Calculer les moyennes et variances des variables
Sepal.Width
etPetal.Length
.Créer un sous jeu de données qui contient uniquement les iris de l’espèce
versicolor
. On appellera ce tableau iris2.Ordonner les individus dans iris2 par valeurs décroissantes de la variable
Sepal.Length
(on pourra utiliser la fonction order).Calculer les valeurs moyennes de
Sepal.Length
pour chaque espèce.Ajouter une variable (qu’on appellera
sum.Petal
) dans le dataframe iris qui contiendra la somme dePetal.Length
etPetal.Width
.
Calculer les indicateurs numériques standards (moyenne, min, max, etc.) des 3 variables du jeux de données ethanol (disponible dans le package lattice).
Calculer les quartiles de chaque variables. On pourra faire un apply avec la fonction quantile.
Faire de même pour les déciles.
On considère le jeu de données presidents
Est-ce que la ligne 20 contient au moins une données manquante ? On pourra utiliser la fonction any.
Quelles sont les lignes de df qui contiennent au moins une donnée manquante ? On pourra utiliser la fonction which.
Supprimer les lignes de df qui contiennent au moins une donnée manquante.