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