Créer les trois vecteurs ci-dessous à l’aide des fonctions rep(), seq(), unlist() et lapply():
[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
[1] 1 1 1 2 2 2 3 3 3 4 4 4
[1] 1 1 2 2 2 3 3 3 3 4 4 4 4 4
rep(1:5, 3)
## [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
rep(1:4, each = 3)
## [1] 1 1 1 2 2 2 3 3 3 4 4 4
unlist(lapply(1:4, function(k) rep(k, k+1)))
## [1] 1 1 2 2 2 3 3 3 3 4 4 4 4 4
A l’aide des fonctions paste(), lapply() et unlist(), générer le vecteur suivant:
[1] “A1)” “A2)” “A3)” “A4)” “A5)” “A6)” “A7)” “A8)” “A9)” “A10)”
unlist(lapply(1:10, function(k) paste('A', k, ')', sep = "")))
## [1] "A1)" "A2)" "A3)" "A4)" "A5)" "A6)" "A7)" "A8)" "A9)" "A10)"
Le vecteur letters contient les 26 lettres de l’alphabet. Trouver la position de la lettre q, puis créer le vecteur de la forme
“a1” “b2” … “q??”
numbers <- 1:26
indice_q <- numbers[letters == "q"]
unlist(lapply(1:indice_q, function(k) paste(letters[k], numbers[k], sep = '')))
## [1] "a1" "b2" "c3" "d4" "e5" "f6" "g7" "h8" "i9" "j10" "k11" "l12"
## [13] "m13" "n14" "o15" "p16" "q17"
Ecrire le code R permettant de
Créer la matrice
[,1] [,2] [,3] [,4]
[1,] 1 5 5 0
[2,] 0 5 6 1
[3,] 3 0 3 3
[4,] 4 4 4 2
et de l’afficher
mat <- matrix(c(1,5,5,0,0,5,6,1,3,0,3,3,4,4,4,2), nrow = 4, byrow = T)
mat
## [,1] [,2] [,3] [,4]
## [1,] 1 5 5 0
## [2,] 0 5 6 1
## [3,] 3 0 3 3
## [4,] 4 4 4 2
diag(mat)
## [1] 1 5 3 2
mat[1:2, ]
## [,1] [,2] [,3] [,4]
## [1,] 1 5 5 0
## [2,] 0 5 6 1
mat[, 3:4]
## [,1] [,2]
## [1,] 5 0
## [2,] 6 1
## [3,] 3 3
## [4,] 4 2
mat[, -3]
## [,1] [,2] [,3]
## [1,] 1 5 0
## [2,] 0 5 1
## [3,] 3 0 3
## [4,] 4 4 2
det(mat)
## [1] 60
Charger et afficher les 5 premières observations du jeu de données iris.
data("iris")
iris[1:5, ]
## 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
Créer un sous jeu de données iris_V1 contenant les observations associées à la modalité versicolor sur la variable species. Afficher les observations 10 à 15.
iris_V1 <- iris[iris$Species=='versicolor', ]
iris_V1[10:15, ]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 60 5.2 2.7 3.9 1.4 versicolor
## 61 5.0 2.0 3.5 1.0 versicolor
## 62 5.9 3.0 4.2 1.5 versicolor
## 63 6.0 2.2 4.0 1.0 versicolor
## 64 6.1 2.9 4.7 1.4 versicolor
## 65 5.6 2.9 3.6 1.3 versicolor
Créer iris_V2 en triant par ordre décroissant les données de iris_V1 suivant la variable Sepal.length. On utilisera la fonction order.
iris_V2 <- iris_V1[order(iris_V1$Sepal.Length, decreasing = TRUE), ]
iris_V2[1:10, ]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 51 7.0 3.2 4.7 1.4 versicolor
## 53 6.9 3.1 4.9 1.5 versicolor
## 77 6.8 2.8 4.8 1.4 versicolor
## 66 6.7 3.1 4.4 1.4 versicolor
## 78 6.7 3.0 5.0 1.7 versicolor
## 87 6.7 3.1 4.7 1.5 versicolor
## 59 6.6 2.9 4.6 1.3 versicolor
## 76 6.6 3.0 4.4 1.4 versicolor
## 55 6.5 2.8 4.6 1.5 versicolor
## 52 6.4 3.2 4.5 1.5 versicolor
Calculer les statistiques descriptives (moyenne, écart-type, minimum et maximum) pour chacune des trois variables du jeu de données ethanol du package MASS.
library(lattice)
data(ethanol)
apply(ethanol, 2, mean)
## NOx C E
## 1.9573750 12.0340909 0.9264773
apply(ethanol, 2, sd)
## NOx C E
## 1.1327102 3.9324727 0.2035688
apply(ethanol, 2, min)
## NOx C E
## 0.370 7.500 0.535
apply(ethanol, 2, max)
## NOx C E
## 4.028 18.000 1.232
Calculer les quartiles pour chacune des trois variables à l’aide des fonctions apply et quantile
apply(ethanol, 2, function(x) quantile(x, probs = c(0.25, 0.5, 0.75)))
## NOx C E
## 25% 0.9530 8.625 0.76175
## 50% 1.7545 12.000 0.93200
## 75% 3.0030 15.000 1.10975
Créer un data frame stat_desc qui agrège les résultats des questions précédentes, c’est à dire de la forme:
statistique | NOx | C | E |
---|---|---|---|
moyenne | 1.957 | 12.03 | 0.9265 |
Ecart-type | 1.133 | 3.932 | 0.2036 |
minimum | 0.37 | 7.5 | 0.535 |
maximum | 4.028 | 18 | 1.232 |
1er quartiles | 0.953 | 8.625 | 0.7618 |
médiane | 1.754 | 12 | 0.932 |
3ème quartile | 3.003 | 15 | 1.11 |
library(pander)
stat_desc_temp <- as.data.frame(apply(ethanol, 2, function(x) c(mean(x), sd(x), min(x), max(x), quantile(x, probs = c(0.25, 0.5, 0.75)))))
stat_desc <- data.frame(statistique = c('moyenne', 'écart-type', 'minimum', 'maximum', '1er quartiles', 'médiane', '3ème quartile'), stat_desc_temp)
rownames(stat_desc) <- c()
#pander(stat_desc)
stat_desc
## statistique NOx C E
## 1 moyenne 1.957375 12.034091 0.9264773
## 2 écart-type 1.132710 3.932473 0.2035688
## 3 minimum 0.370000 7.500000 0.5350000
## 4 maximum 4.028000 18.000000 1.2320000
## 5 1er quartiles 0.953000 8.625000 0.7617500
## 6 médiane 1.754500 12.000000 0.9320000
## 7 3ème quartile 3.003000 15.000000 1.1097500
Charger le jeu de données Aids2 du package MASS et produire un résumé statistique en appliquant la fonction summary.
library(MASS)
data(Aids2)
summary(Aids2)
## state sex diag death status T.categ
## NSW :1780 F: 89 Min. : 8302 Min. : 8469 A:1082 hs :2465
## Other: 249 M:2754 1st Qu.:10163 1st Qu.:10672 D:1761 blood : 94
## QLD : 226 Median :10665 Median :11235 hsid : 72
## VIC : 588 Mean :10584 Mean :10990 other : 70
## 3rd Qu.:11103 3rd Qu.:11504 id : 48
## Max. :11503 Max. :11504 haem : 46
## (Other): 48
## age
## Min. : 0.00
## 1st Qu.:30.00
## Median :37.00
## Mean :37.41
## 3rd Qu.:43.00
## Max. :82.00
##
Créer un vecteur, de taille légal au nombre de variables, indiquant par un booléen si la variable est numérique ou pas. Afficher ce vecteur.
unlist(lapply(Aids2[1, ], is.numeric))
## state sex diag death status T.categ age
## FALSE FALSE TRUE TRUE FALSE FALSE TRUE
Créer un jeu de données Aids2-qual contenant les variables qualitative de Aids2.
Aids_qual <- Aids2[, !unlist(lapply(Aids2[1, ], is.numeric))]
Donner les modalités de chaque variable qualitative en utilisant la fonction levels(). Les modalité de chaque variables seront stockés dans une liste, chaque élément de la liste prendra le nom de la variable associée aux modalités.
list_modalite <- lapply(1:ncol(Aids_qual), function(k) levels(Aids_qual[, k]))
names(list_modalite) <- names(Aids_qual)
list_modalite
## $state
## [1] "NSW" "Other" "QLD" "VIC"
##
## $sex
## [1] "F" "M"
##
## $status
## [1] "A" "D"
##
## $T.categ
## [1] "hs" "hsid" "id" "het" "haem" "blood" "mother" "other"