R
- STID 1ère annéeNous allons utiliser la base de données Comptoir2000
, stockée sous forme de fichiers textes, dont voici les liens :
Il est possible de faire l’équivalent d’un COUNT(*)
avec la commande aggregate()
en utilisant la fonction length
. Voici un exemple, dans mtcars
, pour calculer le nombre de voitures pour chaque modalité de am
. Dans ce cas, la variable à gauche du tilde (~
) n’a pas d’importance mais il est nécessaire de la mettre.
tab = aggregate(mpg ~ am, mtcars, length)
tab
am mpg
1 0 19
2 1 13
Voici le même résultat en SQL
.
sqldf("
SELECT am, COUNT(*)
FROM mtcars
GROUP BY am
")
am COUNT(*)
1 0 19
2 1 13
Pour réaliser l’équivalent d’un COUNT(DISTINCT var)
, il est nécessaire d’utiliser une fonction personnalisée. Voici la définition de cette fonction et un exemple d’utilisation.
length_distinct <- function(x) {
return (length(unique(x)))
}
tab = aggregate(carb ~ am, mtcars, length_distinct)
tab
am carb
1 0 4
2 1 5
Et en SQL
sqldf("
SELECT am, COUNT(DISTINCT carb)
FROM mtcars
GROUP BY am
")
am COUNT(DISTINCT carb)
1 0 4
2 1 5
Pour information, si on veut avoir une table triée, il faut utiliser la fonction order()
dont voici un exemple de fonctionnement.
# Création d'un vecteur
a = c(5, 1, 4, 3)
# Affichage de celui-ci
a
[1] 5 1 4 3
# Tri de ce vecteur (ordre par défaut = croissant)
sort(a)
[1] 1 3 4 5
# Tri de ce vecteur par ordre décroissant
sort(a, decreasing = TRUE)
[1] 5 4 3 1
# Indices des valeurs triées dans l'ordre croissant par défaut
order(a)
[1] 2 4 3 1
# Indices des valeurs triées dans l'ordre décroissant
order(a, decreasing = TRUE)
[1] 1 3 4 2
Nous calculons ici, dans mtcars
, la consommation moyenne pour chaque modalité de gear
.
tab = aggregate(mpg ~ gear, mtcars, mean)
tab
gear mpg
1 3 16.10667
2 4 24.53333
3 5 21.38000
Nous pouvons obenir cette table triée sur la consommation (variable mpg
). L’ordre par défaut est bien évidemment l’ordre croissant.
tab_tri = tab[order(tab$mpg),]
tab_tri
gear mpg
1 3 16.10667
3 5 21.38000
2 4 24.53333
Il est possible d’avoir l’ordre décroissant avec l’option decreasing = TRUE
. Et on peut limiter les décimales dans la fonction kable()
avec l’option digits = 2
.
tab_tri2 = tab[order(tab$mpg, decreasing = TRUE),]
tab_tri2
gear mpg
2 4 24.53333
3 5 21.38000
1 3 16.10667
Créer un document html
en R markdown
, contenant les éléments suivants. Vous devez faire un chapitre (avec titre de niveau 2 donc), pour chaque item de la liste suivante. N’hésitez pas à faire des sous-partie pour chaque sous-item. Vous devez utiliser le langage R
, et pas de SQL
.
R
, à l’aide de read.table()
"Royaume-Uni"
min
) et le prix maximum (max
)MontantCommande
qui contient, pour chaque commande, les informations suivantes