R
- STID 1ère annéeiris
A partir des données iris
, déjà présentes dans R
, créer les tableaux suivantes, à l’aide des fonctions aggregate()
et merge()
:
aggregate(. ~ Species, iris, mean)
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1 setosa 5.006 3.428 1.462 0.246
2 versicolor 5.936 2.770 4.260 1.326
3 virginica 6.588 2.974 5.552 2.026
aggregate(. ~ Species, iris, sd)
Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1 setosa 0.3524897 0.3790644 0.1736640 0.1053856
2 versicolor 0.5161711 0.3137983 0.4699110 0.1977527
3 virginica 0.6358796 0.3224966 0.5518947 0.2746501
Sepal.Length
aggregate(Sepal.Length ~ Species, iris, summary)
Species Sepal.Length.Min. Sepal.Length.1st Qu. Sepal.Length.Median
1 setosa 4.300 4.800 5.000
2 versicolor 4.900 5.600 5.900
3 virginica 4.900 6.225 6.500
Sepal.Length.Mean Sepal.Length.3rd Qu. Sepal.Length.Max.
1 5.006 5.200 5.800
2 5.936 6.300 7.000
3 6.588 6.900 7.900
Sepal.Length
merge(setNames(aggregate(Sepal.Length ~ Species, iris, mean), c("Espèce", "Moyenne")),
setNames(aggregate(Sepal.Length ~ Species, iris, median), c("Espèce", "Médiane")))
Espèce Moyenne Médiane
1 setosa 5.006 5.0
2 versicolor 5.936 5.9
3 virginica 6.588 6.5
# ou
setNames(
merge(aggregate(Sepal.Length ~ Species, iris, mean),
aggregate(Sepal.Length ~ Species, iris, median),
by = "Species"),
c("Espèce", "Moyenne", "Médiane")
)
Espèce Moyenne Médiane
1 setosa 5.006 5.0
2 versicolor 5.936 5.9
3 virginica 6.588 6.5
heart.txt
heart = read.table("donnees/heart.txt", header = T)
data.frame
avec uniquement les individus masculins ayant un problème cardiaqueheartM = subset(heart, subset = sexe == "masculin")
type_douleur
, sucre
, electro
, et vaisseau
angine
, depression
heartMbis = subset(heartM, select = c(type_douleur, sucre, electro, vaisseau,
angine, depression))
data.frame
à partir de ce data.frame
, avec
nbA
comptant le nombre de fois où une variable des variables suivantes est égale à A
: type_douleur
, sucre
, electro
, et vaisseau
flag
avec les deux modalités suivantes :
"problème"
: angine
à "oui"
et depression
supérieur ou égal à 4.0
"attention"
: sinonheartMter = transform(heartMbis,
nbA = (type_douleur == "A") + (sucre == "A") +
(electro == "A") + (vaisseau == "A"),
flag = factor(angine == "oui" & depression >= 4,
labels = c("attention", "probleme")))
aggregate(cholester ~ coeur, heart, mean)
coeur cholester
1 absence 244.2133
2 presence 256.4667
# Ici, pour length, on peut mettre n'importe quelle autre variable que coeur à gauche
setNames(aggregate(age ~ coeur, heart, length), c("coeur", "nb"))
coeur nb
1 absence 150
2 presence 120
data.frame
s précédement créés pour avoir les informations en une seule tablemerge(aggregate(cholester ~ coeur, heart, mean),
setNames(aggregate(age ~ coeur, heart, length), c("coeur", "nb")))
coeur cholester nb
1 absence 244.2133 150
2 presence 256.4667 120
# pic et depression sont des quantis discrètes a priori
aggregate(. ~ coeur,
subset(heart, select = c(age, pression, cholester,
taux_max, depression, pic,
coeur)),
mean)
coeur age pression cholester taux_max depression pic
1 absence 52.70667 128.8667 244.2133 158.3333 0.6226667 1.400000
2 presence 56.59167 134.4417 256.4667 138.8583 1.5841667 1.816667
aggregate(age ~ angine + coeur, heart, mean)
angine coeur age
1 non absence 52.54331
2 oui absence 53.60870
3 non presence 56.77778
4 oui presence 56.43939