Leçons du module (2/2)
Exploration et Agrégation
R a été créé principalement comme un environnement statistique. Par conséquent, il met à disposition de nombreuses fonctions natives pour analyser, résumer et comprendre la distribution des données dans des vecteurs ou des tables.
Fonctions Statistiques de Base
R permet de calculer très facilement les principaux indicateurs de position et de variabilité sur des vecteurs numériques :
mean(x): Calcule la moyenne arithmétique des éléments.median(x): Calcule la médiane (la valeur centrale).sd(x): Calcule l'écart-type (mesure de la dispersion des données).min(x)etmax(x): Renvoient respectivement la valeur minimale et maximale.
values <- c(10, 12, 15, 18, 20, 22)
avg <- mean(values)
dispersion <- sd(values)
cat("Moyenne :", avg, "- Écart-type :", round(dispersion, 2), "\n")
Gestion des Données Manquantes (NA)
Dans le monde réel, les jeux de données contiennent souvent des valeurs manquantes, représentées en R par l'entité spéciale NA (Not Available).
Si vous tentez de calculer la moyenne ou tout autre indicateur sur un vecteur contenant ne serait-ce qu'un seul NA, R renverra NA comme résultat. Pour ignorer les valeurs manquantes, vous devez passer l'argument logique na.rm = TRUE (NA remove) :
temperatures <- c(18, 21, NA, 24, 19)
# Cela renverra NA
print(mean(temperatures))
# Cela ignorera le NA et effectuera le calcul sur les valeurs valides
print(mean(temperatures, na.rm = TRUE))
Résumé Global avec summary()
La fonction summary() est un outil puissant qui fournit un aperçu statistique complet d'un vecteur ou d'un Data Frame entier, en affichant le minimum, le premier quartile, la médiane, la moyenne, le troisième quartile et le maximum :
prices <- c(5, 10, 15, 20, 100)
print(summary(prices))
Agrégation des Données avec aggregate
Lorsque l'on travaille avec des data frames, il est courant de vouloir calculer des statistiques de résumé (comme la moyenne ou la somme) par groupes ou catégories. La fonction aggregate() en R simplifie ce processus :
df <- data.frame(
department = c("HR", "IT", "HR", "IT"),
salary = c(3000, 4500, 3200, 4800)
)
# Calcule la moyenne des salaires par département
avg_salaries <- aggregate(salary ~ department, data = df, FUN = mean)
print(avg_salaries)
La syntaxe salary ~ department signifie "analyse la variable salary en fonction de la variable department". L'argument FUN = mean spécifies que nous voulons calculer la moyenne arithmétique de chaque groupe.
Filtrage Avancé avec subset
La fonction subset() fournit un moyen intuitif et élégant d'extraire des sous-ensembles de lignes et de colonnes d'un data frame, évitant ainsi l'utilisation de crochets complexes :
employees <- data.frame(
name = c("Alice", "Bob", "Charlie"),
age = c(25, 34, 29),
active = c(TRUE, FALSE, TRUE)
)
# Filtre uniquement les employés actifs âgés de plus de 28 ans
active_employees <- subset(employees, active == TRUE & age > 28)
À vous de jouer
Étant donné le vecteur temperatures, calculez la moyenne et sauvegardez-la dans la variable mean_temp. Calculez ensuite la médiane et sauvegardez-la dans median_temp.
Afficher l'indice
Utilisez mean_temp <- mean(temperatures) et median_temp <- median(temperatures)
Solution disponible après 3 tentatives
Étant donné le vecteur scores contenant une valeur NA, calculez l'écart-type du vecteur en excluant les valeurs manquantes, et sauvegardez-le dans la variable sd_scores.
Afficher l'indice
Utilisez la fonction sd() avec l'argument na.rm = TRUE : sd_scores <- sd(scores, na.rm = TRUE)
Solution disponible après 3 tentatives
Étant donné le data frame df, obtenez le résumé statistique (summary) de la colonne values et sauvegardez-le dans la variable stats_summary.
Afficher l'indice
Extrayez la colonne en utilisant l'opérateur $ et passez-la à summary() : stats_summary <- summary(df$values)
Solution disponible après 3 tentatives
Étant donné le data frame sales, utilisez la fonction aggregate() pour calculer la somme (FUN = sum) de la colonne revenue regroupée par la colonne region. Sauvegardez le résultat dans la variable region_sales.
Afficher l'indice
Utilisez : region_sales <- aggregate(revenue ~ region, data = sales, FUN = sum)
Solution disponible après 3 tentatives
Étant donné le data frame products, utilisez la fonction subset() pour filtrer uniquement les produits appartenant à la catégorie 'Electronics' (category == 'Electronics') et ayant un prix supérieur à 100 (price > 100). Sauvegardez le résultat dans la variable expensive_electronics.
Afficher l'indice
Utilisez : expensive_electronics <- subset(products, category == 'Electronics' & price > 100)
Solution disponible après 3 tentatives