Ce rapport interactif analyse les données de ventes par région et catégorie de produits. Il utilise les fonctionnalités interactives de R Markdown pour permettre une exploration dynamique des données.
Le code ci-dessous charge les bibliothèques nécessaires et importe le dataset.
# Chargement des bibliothèques
library(dplyr) # Manipulation des données
library(ggplot2) # Visualisations statiques
library(plotly) # Visualisations interactives
library(DT) # Tableaux interactifs
library(lubridate) # Gestion des dates
library(readr) # Lecture des fichiers CSV
# Chargement et parsing du dataset
sales_data <- read_csv("C:/Users/MOHAMED/Documents/DATA_ANALYSIS/FORMATION_NIVEAU_AVANCER/R_coursera_Data/sales_data.csv")
# Conversion de la colonne date en format Date
sales_data$Date <- as.Date(sales_data$date)
# Aperçu des données
head(sales_data)
#> # A tibble: 6 × 7
#> date region category salesperson units_sold revenue Date
#> <date> <chr> <chr> <chr> <dbl> <dbl> <date>
#> 1 2024-01-01 East Clothing Bob 16 439. 2024-01-01
#> 2 2024-01-01 West Toys Bob 20 321 2024-01-01
#> 3 2024-01-01 North Furniture Ethan 8 264. 2024-01-01
#> 4 2024-01-01 North Toys Ethan 5 386. 2024-01-01
#> 5 2024-01-01 West Toys Charlie 2 197. 2024-01-01
#> 6 2024-01-01 East Clothing Alice 5 311. 2024-01-01
Créer un boxplot interactif des unités vendues par région en utilisant ggplot2 + plotly.
ggplot2 crée le graphique statiqueggplotly() le rend interactif
(zoom, survol, filtres)# Créer le boxplot avec ggplot2
plot_1 <- ggplot(sales_data, aes(x = region, y = units_sold, fill = region)) +
geom_boxplot() + # Graphique en boîte à moustaches
labs(
title = "Units Sold by Region", # Titre du graphique
x = "Region", # Label axe X
y = "Units Sold", # Label axe Y
fill = "Region" # Label légende
) +
theme_minimal() # Thème épuré
# Rendre le graphique interactif avec plotly
ggplotly(plot_1)
Interprétation : Ce boxplot montre la distribution des unités vendues par région. Les boîtes représentent le 1er et 3ème quartile, la ligne centrale la médiane, et les points au-delà des moustaches sont des outliers.
Créer un tableau interactif du résumé des ventes par région avec DT.
dplyr calcule les statistiques par groupedatatable() rend le tableau filtrable
et triable# Créer le résumé des ventes par région
summary_tbl <- sales_data %>%
group_by(region) %>% # Grouper par région
summarize(
Average_Revenue = round(mean(revenue, na.rm = TRUE), 2), # Revenue moyen
Total_Revenue = round(sum(revenue, na.rm = TRUE), 2), # Revenue total
Total_Units = sum(units_sold, na.rm = TRUE), # Unités totales
Transactions = n() # Nombre de transactions
) %>%
arrange(desc(Total_Revenue)) # Trier par revenue décroissant
# Afficher en tableau interactif
datatable(
summary_tbl,
caption = "Résumé des ventes par région",
options = list(
pageLength = 10,
searchHighlight = TRUE
),
colnames = c("Région", "Revenue Moyen ($)", "Revenue Total ($)",
"Unités Vendues", "Transactions")
)
Interprétation : Ce tableau permet de comparer les performances de chaque région. Utilisez la barre de recherche pour filtrer et cliquez sur les en-têtes pour trier.
Filtrer les données selon le paramètre category défini
dans le YAML.
Catégorie sélectionnée : Toys
# Afficher les catégories disponibles
cat("Catégories disponibles :", unique(sales_data$category), "\n")
#> Catégories disponibles : Clothing Toys Furniture Electronics Groceries
# Filtrer selon le paramètre YAML
category_data <- sales_data %>%
filter(category == params$category)
cat("Nombre de lignes pour", params$category, ":", nrow(category_data), "\n")
#> Nombre de lignes pour Toys : 294
# Créer le graphique de tendance
plot_2 <- ggplot(category_data, aes(x = Date, y = revenue, color = region)) +
geom_line(lwd = 1) +
geom_smooth(method = "lm", se = FALSE, linetype = "dashed") +
labs(
title = paste("Tendance des ventes pour :", params$category),
subtitle = paste("Période :", min(category_data$Date), "→", max(category_data$Date)),
x = "Date",
y = "Revenue ($)",
color = "Région"
) +
theme_minimal()
ggplotly(plot_2)
Interprétation : Ce graphique montre l’évolution du revenue pour la catégorie Toys par région. Les lignes en pointillés représentent la tendance linéaire.
Ajouter une logique conditionnelle pour éviter les graphiques vides.
if (nrow(category_data) > 0) {
cat("Données disponibles pour :", params$category, "\n")
plot_3 <- ggplot(category_data, aes(x = Date, y = units_sold, fill = region)) +
geom_col() +
labs(
title = paste("Unités vendues pour :", params$category),
subtitle = paste("Période :", min(category_data$Date), "→", max(category_data$Date)),
x = "Date",
y = "Unités vendues",
fill = "Région"
) +
theme_minimal()
ggplotly(plot_3)
} else {
print(paste("Aucune donnée disponible pour la catégorie :", params$category))
}
#> Données disponibles pour : Toys
Interprétation : Ce graphique montre les unités vendues par date pour la catégorie Toys. Chaque couleur représente une région différente.
| Section | Outil | Résultat |
|---|---|---|
| Graphiques interactifs | ggplot2 + plotly | Boxplot zoomable |
| Tableaux interactifs | DT | Tableau filtrable |
| Filtres dynamiques | params + dplyr | Filtrage par catégorie |
| Validation | if/else | Fallback si données vides |
Recommandation : Pour explorer d’autres catégories, modifiez le paramètre
categorydans le YAML header et régénérez le rapport.