library(readxl)
library(dplyr)
library(ggplot2)
library(knitr)
El presente análisis adopta un enfoque descriptivo–exploratorio con
orientación estratégica.
Se busca evaluar el desempeño comercial y la rentabilidad de Adidas
identificando diferencias por región (West, South, Northeast), producto
(Womens Apparel, Mens Athletic Footwear), método de venta (Outlet,
In-store, Online) y distribuidor (West Gear, Walmart).
Este enfoque se selecciona porque permite identificar patrones, variabilidad y relaciones clave entre variables financieras, facilitando la toma de decisiones basada en datos.
adidas <- read_excel("DatosCaso1.xlsx")
adidas <- adidas %>%
mutate(
precio_unidad = as.numeric(gsub("[^0-9.]", "", precio_unidad)),
ventas_total = as.numeric(gsub("[^0-9.]", "", ventas_total)),
utilidad_operativa = as.numeric(gsub("[^0-9.]", "", utilidad_operativa)),
unidades_vendidas = as.numeric(gsub("\\.", "", unidades_vendidas))
)
ventas_region <- adidas %>%
filter(region %in% c("West","South","Northeast")) %>%
group_by(region) %>%
summarise(
ventas_totales = sum(ventas_total),
unidades_totales = sum(unidades_vendidas),
promedio_ventas = mean(ventas_total),
sd_ventas = sd(ventas_total)
)
ventas_region
## # A tibble: 3 × 5
## region ventas_totales unidades_totales promedio_ventas sd_ventas
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 Northeast 25078267 501279 10555. 11637.
## 2 South 20603356 492260 11923. 12168.
## 3 West 36436157 686985 14884. 13399.
ggplot(ventas_region, aes(x=region, y=ventas_totales)) +
geom_col() +
theme_minimal() +
labs(title="Ventas Totales por Región")
Hallazgo relevante:
Las diferencias en ventas totales y desviación estándar indican
concentración y variabilidad distinta entre regiones, lo que sugiere
prioridades estratégicas diferenciadas.
ventas_producto <- adidas %>%
filter(producto %in% c("Womens Apparel","Mens Athletic Footwear")) %>%
group_by(producto) %>%
summarise(
ventas_totales = sum(ventas_total),
promedio = mean(ventas_total),
sd = sd(ventas_total)
)
ventas_producto
## # A tibble: 0 × 4
## # ℹ 4 variables: producto <chr>, ventas_totales <dbl>, promedio <dbl>, sd <dbl>
Interpretación:
La comparación permite identificar cuál categoría lidera en ingresos y
cuál presenta mayor volatilidad.
resumen_metodo <- adidas %>%
group_by(metodo_venta, distribuidor) %>%
summarise(
promedio = mean(ventas_total),
sd = sd(ventas_total)
)
## `summarise()` has regrouped the output.
## ℹ Summaries were computed grouped by metodo_venta and distribuidor.
## ℹ Output is grouped by metodo_venta.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(metodo_venta, distribuidor))` for per-operation
## grouping (`?dplyr::dplyr_by`) instead.
resumen_metodo
## # A tibble: 18 × 4
## # Groups: metodo_venta [3]
## metodo_venta distribuidor promedio sd
## <chr> <chr> <dbl> <dbl>
## 1 In-store Amazon 18954. 8959.
## 2 In-store Foot Locker 17043. 13687.
## 3 In-store Kohl's 20532. 10540.
## 4 In-store Sports Direct 18788. 12503.
## 5 In-store Walmart 44355. 20439.
## 6 In-store West Gear 22422. 15288.
## 7 Online Amazon 8607. 9484.
## 8 Online Foot Locker 8770. 10585.
## 9 Online Kohl's 9369. 8549.
## 10 Online Sports Direct 10064. 10527.
## 11 Online Walmart 11006. 8133.
## 12 Online West Gear 8679. 9840.
## 13 Outlet Amazon 11039. 9411.
## 14 Outlet Foot Locker 11524. 13128.
## 15 Outlet Kohl's 16642. 12661.
## 16 Outlet Sports Direct 12228. 11862.
## 17 Outlet Walmart 18921. 17451.
## 18 Outlet West Gear 12471. 14472.
ggplot(adidas, aes(x=metodo_venta, y=ventas_total)) +
geom_boxplot() +
theme_minimal() +
labs(title="Detección de Atípicos por Método de Venta")
Hallazgo:
La dispersión y presencia de valores extremos evidencian diferencias en
estabilidad entre canales.
rentabilidad <- adidas %>%
group_by(producto, region) %>%
summarise(
utilidad_prom = mean(utilidad_operativa),
margen_prom = mean(margen_operativo),
sd_utilidad = sd(utilidad_operativa)
)
## `summarise()` has regrouped the output.
## ℹ Summaries were computed grouped by producto and region.
## ℹ Output is grouped by producto.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(producto, region))` for per-operation grouping
## (`?dplyr::dplyr_by`) instead.
rentabilidad
## # A tibble: 30 × 5
## # Groups: producto [6]
## producto region utilidad_prom margen_prom sd_utilidad
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 Men's Apparel Midwest 3005. 0.451 2838.
## 2 Men's Apparel Northeast 2989. 0.367 3280.
## 3 Men's Apparel South 3829. 0.416 3487.
## 4 Men's Apparel Southeast 5627. 0.394 4865.
## 5 Men's Apparel West 4950. 0.437 4897.
## 6 Men's Athletic Footwear Midwest 3109. 0.405 2650.
## 7 Men's Athletic Footwear Northeast 3724. 0.416 3280.
## 8 Men's Athletic Footwear South 5226. 0.433 5035.
## 9 Men's Athletic Footwear Southeast 6537. 0.403 4938.
## 10 Men's Athletic Footwear West 5254. 0.367 3858.
## # ℹ 20 more rows
ggplot(rentabilidad, aes(x=producto, y=utilidad_prom, fill=region)) +
geom_col(position="dodge") +
theme_minimal() +
labs(title="Utilidad Promedio por Producto y Región")
utilidad_total_producto <- adidas %>%
group_by(producto) %>%
summarise(utilidad_total = sum(utilidad_operativa))
ggplot(utilidad_total_producto, aes(x="", y=utilidad_total, fill=producto)) +
geom_bar(stat="identity", width=1) +
coord_polar("y", start=0) +
theme_void() +
labs(title="Participación de Utilidad por Producto")
Interpretación estratégica:
Los segmentos con mayor margen y utilidad promedio representan foco
prioritario de inversión.
cor(adidas$precio_unidad, adidas$unidades_vendidas)
## [1] 0.2658685
ggplot(adidas, aes(x=precio_unidad, y=unidades_vendidas)) +
geom_point() +
theme_minimal() +
labs(title="Precio vs Unidades Vendidas")
Interpretación:
Permite evaluar posible elasticidad: si existe relación negativa,
precios más altos reducen volumen.
cor(adidas$ventas_total, adidas$utilidad_operativa)
## [1] 0.9353717
ggplot(adidas, aes(x=ventas_total, y=utilidad_operativa)) +
geom_point() +
theme_minimal() +
labs(title="Ventas Totales vs Utilidad Operativa")
adidas %>%
group_by(metodo_venta) %>%
summarise(correlacion = cor(ventas_total, utilidad_operativa))
## # A tibble: 3 × 2
## metodo_venta correlacion
## <chr> <dbl>
## 1 In-store 0.924
## 2 Online 0.964
## 3 Outlet 0.911
Hallazgo:
La correlación positiva confirma coherencia financiera, pero puede
variar por canal.
estrategicas <- adidas %>%
group_by(producto, region, metodo_venta) %>%
summarise(
ventas = sum(ventas_total),
utilidad = sum(utilidad_operativa)
) %>%
arrange(desc(utilidad))
## `summarise()` has regrouped the output.
## ℹ Summaries were computed grouped by producto, region, and metodo_venta.
## ℹ Output is grouped by producto and region.
## ℹ Use `summarise(.groups = "drop_last")` to silence this message.
## ℹ Use `summarise(.by = c(producto, region, metodo_venta))` for per-operation
## grouping (`?dplyr::dplyr_by`) instead.
head(estrategicas)
## # A tibble: 6 × 5
## # Groups: producto, region [5]
## producto region metodo_venta ventas utilidad
## <chr> <chr> <chr> <dbl> <dbl>
## 1 Men's Street Footwear Northeast In-store 3376000 1337275
## 2 Women's Apparel South Outlet 2285570 1254117.
## 3 Men's Street Footwear Southeast Online 2740850 1242924.
## 4 Women's Apparel Southeast Online 2359548 1133437.
## 5 Men's Street Footwear West Online 2355444 1026538.
## 6 Men's Street Footwear West Outlet 2827944 1025207.
Conclusión Estratégica:
Las combinaciones con mayor utilidad consolidan oportunidades de
expansión y asignación prioritaria de recursos.
El análisis descriptivo permite fundamentar decisiones comerciales con base en evidencia cuantitativa.