library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2
## ──
## ✔ ggplot2 3.4.1 ✔ purrr 1.0.1
## ✔ tibble 3.2.1 ✔ stringr 1.5.0
## ✔ tidyr 1.3.0 ✔ forcats 1.0.0
## ✔ readr 2.1.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(readxl)
library(ggplot2)
ArcaContinentalDatos <- read_excel("Downloads/ArcaContinentalDatos.xlsx")
View(ArcaContinentalDatos)
str(ArcaContinentalDatos)
## tibble [466,509 × 25] (S3: tbl_df/tbl/data.frame)
## $ ID : num [1:466509] 1 2 3 4 5 6 7 8 9 10 ...
## $ Año : num [1:466509] 2016 2016 2016 2016 2016 ...
## $ Territorio : chr [1:466509] "Guadalajara" "Guadalajara" "Guadalajara" "Guadalajara" ...
## $ Sub Territorio : chr [1:466509] "Belenes" "Belenes" "Belenes" "Belenes" ...
## $ CEDI : chr [1:466509] "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" ...
## $ Cliente : chr [1:466509] "77737" "77737" "77737" "77737" ...
## $ Nombre : chr [1:466509] "ABARR" "ABARR" "ABARR" "ABARR" ...
## $ Tamaño Cte Industria: chr [1:466509] "Extra Grande" "Extra Grande" "Extra Grande" "Extra Grande" ...
## $ Segmento Det : chr [1:466509] "Agua Mineral" "Agua Purificada" "Agua Purificada" "Agua Saborizada" ...
## $ Marca : chr [1:466509] "Topo Chico A.M." "Ciel Agua Purificada" "Ciel Agua Purificada" "Ciel Exprim" ...
## $ Presentacion : chr [1:466509] "600 ml NR" "1 Ltro. N.R." "1.5 Lts. NR" "600 ml NR" ...
## $ Tamaño : chr [1:466509] "Individual" "Individual" "Individual" "Individual" ...
## $ Retornable_NR : chr [1:466509] "No Retornable" "No Retornable" "No Retornable" "No Retornable" ...
## $ Enero : num [1:466509] NA NA NA NA NA NA 1 NA 3 NA ...
## $ Febrero : num [1:466509] NA 2 NA NA NA NA NA 1 3 NA ...
## $ Marzo : num [1:466509] NA 8 3 NA NA 1 NA NA 4 NA ...
## $ Abril : num [1:466509] NA 4 6 NA NA NA NA 1 4 NA ...
## $ Mayo : num [1:466509] NA 4 3 NA NA NA 0 NA 4 NA ...
## $ Junio : num [1:466509] NA 2 3 NA NA NA NA 1 4 0 ...
## $ Julio : num [1:466509] NA 2 3 NA NA NA 0 NA 4 NA ...
## $ Agosto : num [1:466509] NA 2 3 NA NA NA NA 1 7 NA ...
## $ Septiembre : num [1:466509] NA 2 3 NA NA NA NA 1 4 NA ...
## $ Octubre : num [1:466509] NA 2 3 NA NA NA 0 NA 3 NA ...
## $ Noviembre : num [1:466509] NA 4 3 NA 0 NA NA NA 1 NA ...
## $ Diciembre : num [1:466509] 1 2 3 1 NA NA NA NA 3 NA ...
nas_por_columna <- colSums(is.na(ArcaContinentalDatos))
print(nas_por_columna)
## ID Año Territorio
## 0 0 0
## Sub Territorio CEDI Cliente
## 0 0 0
## Nombre Tamaño Cte Industria Segmento Det
## 0 0 0
## Marca Presentacion Tamaño
## 0 0 0
## Retornable_NR Enero Febrero
## 0 233480 231213
## Marzo Abril Mayo
## 227420 224057 216910
## Junio Julio Agosto
## 215753 223411 220242
## Septiembre Octubre Noviembre
## 337314 338386 338460
## Diciembre
## 341855
ArcaContinentalDatos <- replace(ArcaContinentalDatos, is.na(ArcaContinentalDatos), 0)
nas_por_columna <- colSums(is.na(ArcaContinentalDatos))
print(nas_por_columna)
## ID Año Territorio
## 0 0 0
## Sub Territorio CEDI Cliente
## 0 0 0
## Nombre Tamaño Cte Industria Segmento Det
## 0 0 0
## Marca Presentacion Tamaño
## 0 0 0
## Retornable_NR Enero Febrero
## 0 0 0
## Marzo Abril Mayo
## 0 0 0
## Junio Julio Agosto
## 0 0 0
## Septiembre Octubre Noviembre
## 0 0 0
## Diciembre
## 0
boxplot(ArcaContinentalDatos$Enero)
#eliminar renglón de totales
ArcaContinentalDatos<- ArcaContinentalDatos[ArcaContinentalDatos$Enero <6000, ]
library(dplyr)
ventas_enero_a_junio <- ArcaContinentalDatos %>%
select(CEDI, Enero:Junio)
print(ventas_enero_a_junio)
## # A tibble: 466,508 × 7
## CEDI Enero Febrero Marzo Abril Mayo Junio
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Suc. Belenes 0 0 0 0 0 0
## 2 Suc. Belenes 0 2 8 4 4 2
## 3 Suc. Belenes 0 0 3 6 3 3
## 4 Suc. Belenes 0 0 0 0 0 0
## 5 Suc. Belenes 0 0 0 0 0 0
## 6 Suc. Belenes 0 0 1 0 0 0
## 7 Suc. Belenes 1 0 0 0 0 0
## 8 Suc. Belenes 0 1 0 1 0 1
## 9 Suc. Belenes 3 3 4 4 4 4
## 10 Suc. Belenes 0 0 0 0 0 0
## # ℹ 466,498 more rows
movimientos_grandes <- ArcaContinentalDatos %>%
filter(`Tamaño Cte Industria` == "Grande")
print(movimientos_grandes)
## # A tibble: 41,333 × 25
## ID Año Territorio `Sub Territorio` CEDI Cliente Nombre
## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 374960 2019 Guadalajara Belenes Suc. Belenes 7657 FROYL
## 2 374961 2019 Guadalajara Belenes Suc. Belenes 7657 FROYL
## 3 374962 2019 Guadalajara Belenes Suc. Belenes 7657 FROYL
## 4 374963 2019 Guadalajara Belenes Suc. Belenes 7657 FROYL
## 5 374964 2019 Guadalajara Belenes Suc. Belenes 7657 FROYL
## 6 374965 2019 Guadalajara Belenes Suc. Belenes 7657 FROYL
## 7 374966 2019 Guadalajara Belenes Suc. Belenes 7657 FROYL
## 8 374967 2019 Guadalajara Belenes Suc. Belenes 7657 FROYL
## 9 374968 2019 Guadalajara Belenes Suc. Belenes 7657 FROYL
## 10 374969 2019 Guadalajara Belenes Suc. Belenes 7657 FROYL
## # ℹ 41,323 more rows
## # ℹ 18 more variables: `Tamaño Cte Industria` <chr>, `Segmento Det` <chr>,
## # Marca <chr>, Presentacion <chr>, Tamaño <chr>, Retornable_NR <chr>,
## # Enero <dbl>, Febrero <dbl>, Marzo <dbl>, Abril <dbl>, Mayo <dbl>,
## # Junio <dbl>, Julio <dbl>, Agosto <dbl>, Septiembre <dbl>, Octubre <dbl>,
## # Noviembre <dbl>, Diciembre <dbl>
ArcaContinentalDatos_ordenado <- ArcaContinentalDatos %>%
arrange(CEDI, Marca, Presentacion)
print(ArcaContinentalDatos_ordenado)
## # A tibble: 466,508 × 25
## ID Año Territorio `Sub Territorio` CEDI Cliente Nombre
## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 200110 2018 Guadalajara Belenes Suc. Belenes 7800 SAN I
## 2 200224 2018 Guadalajara Belenes Suc. Belenes 7875 ABARR
## 3 200461 2018 Guadalajara Belenes Suc. Belenes 7917 ABARR
## 4 200576 2018 Guadalajara Belenes Suc. Belenes 8010 ABARR
## 5 200682 2018 Guadalajara Belenes Suc. Belenes 8186 SUPER
## 6 200783 2018 Guadalajara Belenes Suc. Belenes 8201 MIGUE
## 7 200968 2018 Guadalajara Belenes Suc. Belenes 8678 FERNA
## 8 201041 2018 Guadalajara Belenes Suc. Belenes 8689 ABARR
## 9 201313 2018 Guadalajara Belenes Suc. Belenes 8795 ABARR
## 10 201415 2018 Guadalajara Belenes Suc. Belenes 8842 ABARR
## # ℹ 466,498 more rows
## # ℹ 18 more variables: `Tamaño Cte Industria` <chr>, `Segmento Det` <chr>,
## # Marca <chr>, Presentacion <chr>, Tamaño <chr>, Retornable_NR <chr>,
## # Enero <dbl>, Febrero <dbl>, Marzo <dbl>, Abril <dbl>, Mayo <dbl>,
## # Junio <dbl>, Julio <dbl>, Agosto <dbl>, Septiembre <dbl>, Octubre <dbl>,
## # Noviembre <dbl>, Diciembre <dbl>
library(dplyr)
ArcaContinentalDatos <- ArcaContinentalDatos %>%
rename(Sub_territorio = `Sub Territorio`)
str(ArcaContinentalDatos)
## tibble [466,508 × 25] (S3: tbl_df/tbl/data.frame)
## $ ID : num [1:466508] 1 2 3 4 5 6 7 8 9 10 ...
## $ Año : num [1:466508] 2016 2016 2016 2016 2016 ...
## $ Territorio : chr [1:466508] "Guadalajara" "Guadalajara" "Guadalajara" "Guadalajara" ...
## $ Sub_territorio : chr [1:466508] "Belenes" "Belenes" "Belenes" "Belenes" ...
## $ CEDI : chr [1:466508] "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" ...
## $ Cliente : chr [1:466508] "77737" "77737" "77737" "77737" ...
## $ Nombre : chr [1:466508] "ABARR" "ABARR" "ABARR" "ABARR" ...
## $ Tamaño Cte Industria: chr [1:466508] "Extra Grande" "Extra Grande" "Extra Grande" "Extra Grande" ...
## $ Segmento Det : chr [1:466508] "Agua Mineral" "Agua Purificada" "Agua Purificada" "Agua Saborizada" ...
## $ Marca : chr [1:466508] "Topo Chico A.M." "Ciel Agua Purificada" "Ciel Agua Purificada" "Ciel Exprim" ...
## $ Presentacion : chr [1:466508] "600 ml NR" "1 Ltro. N.R." "1.5 Lts. NR" "600 ml NR" ...
## $ Tamaño : chr [1:466508] "Individual" "Individual" "Individual" "Individual" ...
## $ Retornable_NR : chr [1:466508] "No Retornable" "No Retornable" "No Retornable" "No Retornable" ...
## $ Enero : num [1:466508] 0 0 0 0 0 0 1 0 3 0 ...
## $ Febrero : num [1:466508] 0 2 0 0 0 0 0 1 3 0 ...
## $ Marzo : num [1:466508] 0 8 3 0 0 1 0 0 4 0 ...
## $ Abril : num [1:466508] 0 4 6 0 0 0 0 1 4 0 ...
## $ Mayo : num [1:466508] 0 4 3 0 0 0 0 0 4 0 ...
## $ Junio : num [1:466508] 0 2 3 0 0 0 0 1 4 0 ...
## $ Julio : num [1:466508] 0 2 3 0 0 0 0 0 4 0 ...
## $ Agosto : num [1:466508] 0 2 3 0 0 0 0 1 7 0 ...
## $ Septiembre : num [1:466508] 0 2 3 0 0 0 0 1 4 0 ...
## $ Octubre : num [1:466508] 0 2 3 0 0 0 0 0 3 0 ...
## $ Noviembre : num [1:466508] 0 4 3 0 0 0 0 0 1 0 ...
## $ Diciembre : num [1:466508] 1 2 3 1 0 0 0 0 3 0 ...
ArcaContinentalDatos <- ArcaContinentalDatos %>%
mutate(Ventas_Primer_Semestre = Enero + Febrero + Marzo + Abril + Mayo + Junio)
ventas_por_marca_primer_semestre <- ArcaContinentalDatos %>%
group_by(Marca) %>%
summarize(Ventas_Primer_Semestre = sum(Ventas_Primer_Semestre))
print(ventas_por_marca_primer_semestre)
## # A tibble: 55 × 2
## Marca Ventas_Primer_Semestre
## <chr> <dbl>
## 1 AdeS Frutal 8126
## 2 AdeS Lácteo 4413
## 3 Barista Bros 334
## 4 Bebere 1034
## 5 Burn 5070
## 6 Café Blak 79
## 7 Ciel Agua Purificada 864686
## 8 Ciel Exprim 33959
## 9 Ciel Mineralizada 18043
## 10 Ciel Mini 4942
## # ℹ 45 more rows
media_ventas <- ArcaContinentalDatos %>%
group_by(Marca, Presentacion, Tamaño) %>%
summarise(Media_Ventas_Primer_Semestre = mean(Enero + Febrero + Marzo + Abril + Mayo + Junio))
## `summarise()` has grouped output by 'Marca', 'Presentacion'. You can override
## using the `.groups` argument.
print(media_ventas)
## # A tibble: 273 × 4
## # Groups: Marca, Presentacion [272]
## Marca Presentacion Tamaño Media_Ventas_Primer_Semestre
## <chr> <chr> <chr> <dbl>
## 1 AdeS Frutal 200 ml Tetra Individual 1.22
## 2 AdeS Frutal 946 ml NR Tetra Familiar 4.17
## 3 AdeS Lácteo 200 ml Tetra Individual 0.0857
## 4 AdeS Lácteo 946 ml NR Tetra Familiar 3.30
## 5 Barista Bros 250 ml. NR PET Individual 0.343
## 6 Bebere 473 ml NR Individual 3.23
## 7 Burn Lata 235 ml Individual 0.558
## 8 Burn Lata 237 ml Individual 0.182
## 9 Burn Lata 310 ml Individual 0
## 10 Burn Lata 450 ml Individual 2.60
## # ℹ 263 more rows
media_ventas <- mean(ArcaContinentalDatos$Enero + ArcaContinentalDatos$Febrero +
ArcaContinentalDatos$Marzo + ArcaContinentalDatos$Abril +
ArcaContinentalDatos$Mayo + ArcaContinentalDatos$Junio)
# mediana
mediana_ventas <- median(ArcaContinentalDatos$Enero + ArcaContinentalDatos$Febrero +
ArcaContinentalDatos$Marzo + ArcaContinentalDatos$Abril +
ArcaContinentalDatos$Mayo + ArcaContinentalDatos$Junio)
# Mode
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
moda_ventas <- Mode(ArcaContinentalDatos$Enero + ArcaContinentalDatos$Febrero +
ArcaContinentalDatos$Marzo + ArcaContinentalDatos$Abril +
ArcaContinentalDatos$Mayo + ArcaContinentalDatos$Junio)
print(paste("Media de las ventas del primer semestre:", media_ventas))
## [1] "Media de las ventas del primer semestre: 34.6962045666975"
print(paste("Mediana de las ventas del primer semestre:", mediana_ventas))
## [1] "Mediana de las ventas del primer semestre: 4"
print(paste("Moda de las ventas del primer semestre:", moda_ventas))
## [1] "Moda de las ventas del primer semestre: 0"
library(dplyr)
ArcaContinentalDatos <- ArcaContinentalDatos %>%
mutate(Ventas_totales = rowSums(select(., Enero:Diciembre), na.rm = TRUE))
print(ArcaContinentalDatos)
## # A tibble: 466,508 × 27
## ID Año Territorio Sub_territorio CEDI Cliente Nombre
## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 1 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 2 2 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 3 3 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 4 4 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 5 5 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 6 6 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 7 7 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 8 8 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 9 9 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 10 10 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## # ℹ 466,498 more rows
## # ℹ 20 more variables: `Tamaño Cte Industria` <chr>, `Segmento Det` <chr>,
## # Marca <chr>, Presentacion <chr>, Tamaño <chr>, Retornable_NR <chr>,
## # Enero <dbl>, Febrero <dbl>, Marzo <dbl>, Abril <dbl>, Mayo <dbl>,
## # Junio <dbl>, Julio <dbl>, Agosto <dbl>, Septiembre <dbl>, Octubre <dbl>,
## # Noviembre <dbl>, Diciembre <dbl>, Ventas_Primer_Semestre <dbl>,
## # Ventas_totales <dbl>
ventas_totales_por_cedi_y_anio <- ArcaContinentalDatos %>%
group_by(CEDI, Año) %>%
summarise(Ventas_totales = sum(Enero + Febrero + Marzo + Abril + Mayo + Junio + Julio + Agosto + Septiembre + Octubre + Noviembre + Diciembre), .groups = 'drop') %>%
arrange(desc(Ventas_totales))
df_hallazgo_1 <- as.data.frame(ventas_totales_por_cedi_y_anio)
mes_mayor_ventas <- ArcaContinentalDatos %>%
summarise_at(vars(Enero:Diciembre), sum, na.rm = TRUE) %>%
pivot_longer(cols = Enero:Diciembre, names_to = "Mes", values_to = "Ventas_totales") %>%
top_n(1, Ventas_totales)
print(mes_mayor_ventas)
## # A tibble: 1 × 2
## Mes Ventas_totales
## <chr> <dbl>
## 1 Mayo 3139421
df_hallazgo_2 <- as.data.frame(mes_mayor_ventas)
ventas_promedio_por_tamanio <- ArcaContinentalDatos %>%
group_by(Tamaño) %>%
summarise(Ventas_promedio = mean(Ventas_totales, na.rm = TRUE)) %>%
arrange(desc(Ventas_promedio)) %>%
top_n(1, Ventas_promedio)
print(ventas_promedio_por_tamanio)
## # A tibble: 1 × 2
## Tamaño Ventas_promedio
## <chr> <dbl>
## 1 Familiar 114.
df_hallazgo_3 <- as.data.frame(ventas_promedio_por_tamanio)
ventas_por_presentacion <- ArcaContinentalDatos %>%
group_by(Presentacion) %>%
summarise(Ventas_totales = sum(Ventas_totales, na.rm = TRUE)) %>%
arrange(desc(Ventas_totales))
print(ventas_por_presentacion)
## # A tibble: 56 × 2
## Presentacion Ventas_totales
## <chr> <dbl>
## 1 2.5 Lts. Ret Pet 5829946
## 2 500 ml Ret 5633520
## 3 2.5 Lts. NR 2732352
## 4 1.5 Lts. Ret 2192569
## 5 500 ml NR Vidrio 2072196
## 6 2 Lts. NR 1628744
## 7 1.5 Lts. NR 1546595
## 8 1 Ltro. N.R. 1542171
## 9 600 ml NR 1151493
## 10 1.250 Lts NR 672038
## # ℹ 46 more rows
df_hallazgo_4 <- as.data.frame(ventas_por_presentacion)
top_Marca <- ArcaContinentalDatos %>%
group_by(Marca) %>%
summarise(Ventas_totales = sum(Ventas_totales, na.rm = TRUE)) %>%
arrange(desc(Ventas_totales)) %>%
slice(1)
print(top_Marca)
## # A tibble: 1 × 2
## Marca Ventas_totales
## <chr> <dbl>
## 1 Coca-Cola 21611127
df_Marca_mas_vendida <- data.frame(Marca = top_Marca$Marca,
Ventas_totales = top_Marca$Ventas_totales)
print(df_Marca_mas_vendida)
## Marca Ventas_totales
## 1 Coca-Cola 21611127
ventas_por_mes <- ArcaContinentalDatos %>%
summarise_at(vars(Enero:Diciembre), sum, na.rm = TRUE) %>%
pivot_longer(cols = Enero:Diciembre, names_to = "Mes", values_to = "Ventas_totales")
print(ventas_por_mes)
## # A tibble: 12 × 2
## Mes Ventas_totales
## <chr> <dbl>
## 1 Enero 2309875
## 2 Febrero 2252870
## 3 Marzo 2672846
## 4 Abril 2795401
## 5 Mayo 3139421
## 6 Junio 3015644
## 7 Julio 2814366
## 8 Agosto 2908448
## 9 Septiembre 1691288
## 10 Octubre 1714075
## 11 Noviembre 1665560
## 12 Diciembre 1800018
df_hallazgo_6 <- as.data.frame(ventas_por_mes)
library(ggplot2)
library(tidyr)
library(dplyr)
ArcaContinentalDatos_long <- ArcaContinentalDatos %>%
pivot_longer(cols = Enero:Diciembre, names_to = "Mes", values_to = "Ventas_mes")
meses_ordenados <- c("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")
ArcaContinentalDatos_long$Mes <- factor(ArcaContinentalDatos_long$Mes, levels = meses_ordenados)
ventas_por_mes_y_anio <- ArcaContinentalDatos_long %>%
group_by(Año, Mes) %>%
summarise(Total_Ventas = sum(Ventas_mes))
## `summarise()` has grouped output by 'Año'. You can override using the `.groups`
## argument.
ggplot(ventas_por_mes_y_anio, aes(x = Mes, y = Total_Ventas, fill = factor(Año))) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Total de Ventas por Mes y Año",
x = "Mes",
y = "Total de Ventas",
fill = "Año") +
facet_wrap(~Año, nrow = 2) + # Dividir el gráfico en múltiples paneles para cada año
theme_minimal() + # Utilizar un tema minimalista
theme(axis.text.x = element_text(angle = 45, hjust = 1), # Rotar etiquetas del eje x
legend.position = "bottom") # Mover la leyenda a la parte inferior
#Sebastián Fajardo A01412035 #André Castillo Pacheco A01552200 #Ana Cristina Treviño Sáenz A01233898
top_10_marcas <- ArcaContinentalDatos %>%
group_by(Marca) %>%
summarise(Ventas_totales = sum(Ventas_totales)) %>%
top_n(10, Ventas_totales) %>%
arrange(desc(Ventas_totales))
colores <- rainbow(nrow(top_10_marcas))
ggplot(top_10_marcas, aes(x = reorder(Marca, Ventas_totales), y = Ventas_totales, fill = as.factor(Marca))) +
geom_bar(stat = "identity") +
scale_fill_manual(values = colores) +
labs(title = "Top 10 de Ventas por Marca",
x = "Marca",
y = "Ventas totales",
fill = "Marca") +
facet_wrap(~ Marca, scales = "free") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1),
legend.position = "none")
ggplot(ArcaContinentalDatos, aes(x = Tamaño, y = Ventas_totales)) +
geom_point(color = "darkgreen") +
labs(title = "Relación entre Ventas y Tamaño de Tienda",
x = "Tamaño de Tienda",
y = "Ventas_totales") +
facet_wrap(~ Año, scales = "free") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ggplot(ArcaContinentalDatos, aes(x = `Tamaño Cte Industria`, y = Ventas_totales, fill = `Tamaño Cte Industria`)) +
geom_bar(stat = "identity") +
labs(title = "Ventas Totales por Tamaño de Cliente en la Industria",
x = "Tamaño de Cliente en la Industria",
y = "Ventas Totales") +
facet_wrap(~ Año, scales = "free") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ArcaContinentalDatos <- ArcaContinentalDatos %>%
group_by(Año, Marca) %>%
summarise(Ventas_totales = sum(Ventas_totales)) %>%
arrange(Año, desc(Ventas_totales)) %>%
mutate(Ventas_acumuladas = cumsum(Ventas_totales))
## `summarise()` has grouped output by 'Año'. You can override using the `.groups`
## argument.
top_marcas <- ArcaContinentalDatos %>%
group_by(Marca) %>%
summarise(Ventas_acumuladas = last(Ventas_acumuladas)) %>%
arrange(desc(Ventas_acumuladas)) %>%
top_n(10)
## Selecting by Ventas_acumuladas
ArcaContinentalDatos_filtrado <- ArcaContinentalDatos %>%
filter(Marca %in% top_marcas$Marca)
ggplot(ArcaContinentalDatos_filtrado, aes(x = Año, y = Ventas_acumuladas, fill = Marca)) +
geom_area() +
labs(title = "Tendencia de Ventas por Marca a lo largo de los Años",
x = "Año",
y = "Ventas Acumuladas",
fill = "Marca") +
facet_wrap(~ Marca, scales = "free_y", nrow = 2) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ArcaContinentalDatos <- read_excel("Downloads/ArcaContinentalDatos.xlsx")
ArcaContinentalDatos <- replace(ArcaContinentalDatos, is.na(ArcaContinentalDatos), 0)
nas_por_columna <- colSums(is.na(ArcaContinentalDatos))
ArcaContinentalDatos <- ArcaContinentalDatos %>%
mutate(Ventas_totales = rowSums(select(., Enero:Diciembre), na.rm = TRUE))
ventas_por_cliente <- ArcaContinentalDatos %>%
group_by(Cliente) %>%
summarise(Ventas_totales = sum(Ventas_totales)) %>%
arrange(desc(Ventas_totales)) %>%
top_n(10)
## Selecting by Ventas_totales
colores <- c("#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd",
"#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf")
ggplot(ventas_por_cliente, aes(x = reorder(Cliente, Ventas_totales), y = Ventas_totales, fill = Cliente)) +
geom_bar(stat = "identity") +
scale_fill_manual(values = colores) +
labs(title = "Top 10 Clientes por Ventas Totales",
x = "Cliente",
y = "Ventas Totales") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
ArcaContinentalDatos <- read_excel("Downloads/ArcaContinentalDatos.xlsx")
ArcaContinentalDatos <- replace(ArcaContinentalDatos, is.na(ArcaContinentalDatos), 0)
nas_por_columna <- colSums(is.na(ArcaContinentalDatos))
ArcaContinentalDatos <- ArcaContinentalDatos %>%
mutate(Ventas_totales = rowSums(select(., Enero:Diciembre), na.rm = TRUE))
ventas_4567 <- ArcaContinentalDatos %>%
filter(Cliente == "4567") %>%
group_by(Año) %>%
summarise(ventas_totales = sum(Ventas_totales))
ggplot(ventas_4567, aes(x = Año, y = ventas_totales)) +
geom_point() +
labs(title = "Ventas totales del Cliente 4567 por Año",
x = "Año",
y = "Ventas totales") +
theme_minimal()
modelo <- lm(ventas_totales ~ Año, data = ventas_4567)
summary(modelo)
##
## Call:
## lm(formula = ventas_totales ~ Año, data = ventas_4567)
##
## Residuals:
## 1 2 3
## -5092 10185 -5092
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 48918677 17799125 2.748 0.222
## Año -24174 8820 -2.741 0.223
##
## Residual standard error: 12470 on 1 degrees of freedom
## Multiple R-squared: 0.8825, Adjusted R-squared: 0.765
## F-statistic: 7.512 on 1 and 1 DF, p-value: 0.2227
# Ecuación
# y - 48918677 - 24174 * Año
#R cuadrada ajustada
# 77%
nuevos_datos <- data.frame(Año = 2020:2025)
predicciones <- predict(modelo, nuevos_datos)
datos_completos <- rbind(
cbind(ventas_4567, Tipo = "Datos reales"),
cbind(data.frame(Año = 2020:2025, ventas_totales = predicciones), Tipo = "Predicciones")
)
ggplot(datos_completos, aes(x = Año, y = ventas_totales, color = Tipo)) +
geom_line() +
geom_point() +
labs(title = "Ventas Totales (2017-2025)", x = "Año", y = "Ventas Totales", color = "Tipo")
ventas_6626 <- ArcaContinentalDatos %>%
filter(Cliente == "6626") %>%
group_by(Año) %>%
summarise(ventas_totales = sum(Ventas_totales))
modelo_6626 <- lm(ventas_totales ~ Año, data = ventas_6626)
summary(modelo_6626)
##
## Call:
## lm(formula = ventas_totales ~ Año, data = ventas_6626)
##
## Residuals:
## 1 2 3
## -2811 5622 -2811
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 55208195 9825229 5.619 0.112
## Año -27316 4869 -5.610 0.112
##
## Residual standard error: 6886 on 1 degrees of freedom
## Multiple R-squared: 0.9692, Adjusted R-squared: 0.9384
## F-statistic: 31.48 on 1 and 1 DF, p-value: 0.1123
# Ecuación
# y - 55208195 - 27316 * Año
#R cuadrada ajustada
# 93%
nuevos_datos_6626 <- data.frame(Año = 2020:2025)
predicciones_6626 <- predict(modelo_6626, nuevos_datos_6626)
datos_completos_6626 <- rbind(
cbind(ventas_6626, Tipo = "Datos reales"),
cbind(data.frame(Año = 2020:2025, ventas_totales = predicciones_6626), Tipo = "Predicciones")
)
ggplot(datos_completos_6626, aes(x = Año, y = ventas_totales, color = Tipo)) +
geom_line() +
geom_point() +
labs(title = "Ventas Totales (2017-2025) - Cliente 6626", x = "Año", y = "Ventas Totales", color = "Tipo") +
theme_minimal()
ventas_por_anio <- ArcaContinentalDatos %>%
group_by(Año) %>%
summarise(Ventas_totales = sum(Ventas_totales))
modelo_regresion <- lm(Ventas_totales ~ Año, data = ventas_por_anio)
summary(modelo_regresion)
##
## Call:
## lm(formula = Ventas_totales ~ Año, data = ventas_por_anio)
##
## Residuals:
## 1 2 3 4
## 47304 48410 -238732 143018
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.501e+09 1.827e+08 -8.217 0.0145 *
## Año 7.479e+05 9.057e+04 8.257 0.0144 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 202500 on 2 degrees of freedom
## Multiple R-squared: 0.9715, Adjusted R-squared: 0.9573
## F-statistic: 68.18 on 1 and 2 DF, p-value: 0.01435
# Ecuación
# y + 1501000000 - 747900 * Año
#R cuadrada ajustada
# 96%
nuevos_anios <- data.frame(Año = 2020:2025)
predicciones <- predict(modelo_regresion, nuevos_anios)
predicciones_df <- data.frame(Año = nuevos_anios$Año, Ventas_totales = predicciones)
datos_completos <- rbind(
cbind(ventas_por_anio, Tipo = "Datos reales"),
cbind(predicciones_df, Tipo = "Predicciones")
)
ggplot(datos_completos, aes(x = Año, y = Ventas_totales, color = Tipo)) +
geom_line() +
geom_point() +
labs(title = "Ventas Totales por Año",
x = "Año",
y = "Ventas Totales",
color = "Tipo") +
theme_minimal()
ventas_por_anio <- ArcaContinentalDatos %>%
filter(CEDI == "Suc. Belenes") %>%
group_by(Año) %>%
summarise(Ventas_totales = sum(Ventas_totales))
modelo_regresion <- lm(Ventas_totales ~ Año, data = ventas_por_anio)
summary(modelo_regresion)
##
## Call:
## lm(formula = Ventas_totales ~ Año, data = ventas_por_anio)
##
## Residuals:
## 1 2 3 4
## 211552 89252 -813160 512356
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.647e+09 6.304e+08 -2.612 0.121
## Año 8.174e+05 3.125e+05 2.616 0.120
##
## Residual standard error: 698700 on 2 degrees of freedom
## Multiple R-squared: 0.7738, Adjusted R-squared: 0.6607
## F-statistic: 6.842 on 1 and 2 DF, p-value: 0.1203
# Ecuación
# y - 1647000000 - 817400 * Año
#R cuadrada ajustada
# 66%
nuevos_datos
## Año
## 1 2020
## 2 2021
## 3 2022
## 4 2023
## 5 2024
## 6 2025
predicciones <- predict(modelo_regresion)
ggplot(ventas_por_anio, aes(x = Año, y = Ventas_totales)) +
geom_point() +
geom_line(aes(y = predicciones), color = "red") +
labs(title = "Ventas de la Sucursal Belenes por Año",
x = "Año",
y = "Ventas Totales")
ventas_por_anio_ABARR <- ArcaContinentalDatos %>%
filter(Nombre == "ABARR") %>%
group_by(Año) %>%
summarise(Ventas_totales = sum(Ventas_totales))
modelo_regresion_ABARR <- lm(Ventas_totales ~ Año, data = ventas_por_anio_ABARR)
summary(modelo_regresion_ABARR)
##
## Call:
## lm(formula = Ventas_totales ~ Año, data = ventas_por_anio_ABARR)
##
## Residuals:
## 1 2 3 4
## 108267 -39727 -245346 176806
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -428874922 206491069 -2.077 0.173
## Año 213083 102350 2.082 0.173
##
## Residual standard error: 228900 on 2 degrees of freedom
## Multiple R-squared: 0.6843, Adjusted R-squared: 0.5264
## F-statistic: 4.334 on 1 and 2 DF, p-value: 0.1728
# Ecuación
# y - 428874922 - 213083 * Año
#R cuadrada ajustada
#53%
predicciones_ABARR <- predict(modelo_regresion_ABARR, newdata = data.frame(Año = 2020:2025))
pronostico_df <- data.frame(Año = 2020:2025, Ventas_totales = predicciones_ABARR)
ggplot() +
geom_point(data = ventas_por_anio_ABARR, aes(x = Año, y = Ventas_totales)) +
geom_line(data = pronostico_df, aes(x = Año, y = Ventas_totales, color = "Pronóstico")) +
geom_smooth(data = ventas_por_anio_ABARR, aes(x = Año, y = Ventas_totales), method = "lm", se = FALSE, color = "blue") +
labs(title = "Ventas de ABARR por Año",
x = "Año",
y = "Ventas Totales",
color = "Tipo")
## `geom_smooth()` using formula = 'y ~ x'
ventas_por_anio_MARTI <- ArcaContinentalDatos %>%
filter(Nombre == "MARTI") %>%
group_by(Año) %>%
summarise(Ventas_totales = sum(Ventas_totales))
modelo_regresion <- lm(Ventas_totales ~ Año, data = ventas_por_anio_MARTI)
summary(modelo_regresion)
##
## Call:
## lm(formula = Ventas_totales ~ Año, data = ventas_por_anio_MARTI)
##
## Residuals:
## 1 2 3 4
## -4843 5009 4510 -4677
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -11017842 6077974 -1.813 0.212
## Año 5494 3013 1.824 0.210
##
## Residual standard error: 6736 on 2 degrees of freedom
## Multiple R-squared: 0.6245, Adjusted R-squared: 0.4367
## F-statistic: 3.326 on 1 and 2 DF, p-value: 0.2098
# Ecuación
# y - 11017842 - 5494 * Año
#R cuadrada ajustada
#44%
nuevos_anios <- data.frame(Año = 2020:2025)
predicciones <- predict(modelo_regresion, nuevos_anios)
pronostico_df <- data.frame(Año = nuevos_anios$Año, Ventas_totales = predicciones)
ggplot() +
geom_point(data = ventas_por_anio_MARTI, aes(x = Año, y = Ventas_totales, color = "Datos reales")) +
geom_point(data = pronostico_df, aes(x = Año, y = Ventas_totales, color = "Pronóstico"), shape = 16, size = 3) +
geom_smooth(data = ventas_por_anio_MARTI, aes(x = Año, y = Ventas_totales), method = "lm", se = FALSE, color = "blue") +
labs(title = "Ventas de MARTI por Año",
x = "Año",
y = "Ventas Totales",
color = "Tipo") +
scale_color_manual(values = c("blue", "red"))
## `geom_smooth()` using formula = 'y ~ x'
## preguntas detonantes 1. ¿Puede observarse un crecimiento en las ventas de algunos de los segmentos de productos de la familia Coca Cola en las tiendas en las que se implementó el Proyecto Siglo XXI de Arca
#En términos generales, las ventas experimentaron un aumento en el año 2019, aunque cada segmento mostró un comportamiento diferente. Este incremento en las ventas puede atribuirse a estrategias de marketing mejoradas y al lanzamiento de nuevos productos. En el año 2018, las ventas de Coca-Cola aumentaron en 100,000 unidades entre los meses de febrero y diciembre, mientras que las ventas de aguas isotónicas permanecieron estables, sin registrar cambios significativos.
ventas_totales_tam_cliente <- ArcaContinentalDatos %>%
filter(Año == 2019) %>%
group_by(`Tamaño Cte Industria`) %>%
summarise(Ventas_totales = sum(Ventas_totales)) %>%
filter(Ventas_totales != 0)
ggplot(ventas_totales_tam_cliente, aes(x=`Tamaño Cte Industria`, y=Ventas_totales)) +
geom_bar(stat="identity", fill="skyblue") +
labs(x="Tamaño de Cliente", y="Ventas Totales (Qty)", title="Ventas totales por tamaño de cliente")
#El incremento en las ventas es similar independientemente de los tamaños de los clientes. Dado que todos los negocios operan los mismos días y están ubicados en la misma ciudad (Guadalajara), los factores externos que afectan las ventas tienen un impacto casi idéntico en todos. Se observa que el mes de mayo de 2019 fue el de mayor venta en todos los tamaños de cliente, mientras que el primer bimestre fue el periodo más bajo, también para todos los tamaños de cliente.
ArcaContinentalDatos_long <- ArcaContinentalDatos %>%
gather(key = "Mes", value = "Ventas", Enero:Diciembre) %>%
mutate(Mes = factor(Mes, levels = month.name)) # Reordena los meses para que aparezcan en el orden correcto
# Ahora calcula las ventas totales por marca y mes
ventas_totales_marca_mes <- ArcaContinentalDatos_long %>%
filter(Año == 2019) %>%
filter(Marca %in% c("Coca-Cola", "Valle Frut", "Ciel Agua Purificada", "Coca-Cola Light")) %>%
group_by(Marca, Mes) %>%
summarise(Ventas_Totales = sum(Ventas))
## `summarise()` has grouped output by 'Marca'. You can override using the
## `.groups` argument.
# Graficar las ventas totales por marca y mes
ggplot(ventas_totales_marca_mes, aes(x = Mes, y = Ventas_Totales, fill = Marca)) +
geom_bar(stat = "identity", position = "dodge") +
labs(x = "Mes", y = "Ventas Totales (QTY)", title = "Ventas totales por marca y mes")
#El patrón de ventas es consistente entre las diversas marcas a lo largo de los meses, sin embargo, algunas marcas superan significativamente a otras en términos de volumen de ventas. Los meses con temperaturas más altas tienden a registrar mayores ventas de bebidas, y las marcas más reconocidas son las preferidas por los consumidores. En general, mayo de 2019 destaca como el mes con mayores ventas para todas las marcas, siendo Coca-Cola la marca líder en ventas durante este período.
# Verificar si la columna "Segmento_Det" existe en tus datos
if ("Segmento_Det" %in% colnames(ArcaContinentalDatos)) {
print("La columna 'Segmento_Det' existe en tus datos.")
} else {
print("La columna 'Segmento_Det' NO existe en tus datos.")
}
## [1] "La columna 'Segmento_Det' NO existe en tus datos."
ventas_totales_envase <- ArcaContinentalDatos %>%
filter(Retornable_NR == "Retornable") %>%
filter(Año %in% c(2018, 2019)) %>%
pivot_longer(cols = c(Enero:Diciembre),
names_to = "Mes",
values_to = "Ventas_Totales") %>%
group_by(Año, Mes) %>%
summarise(Ventas_Totales = sum(Ventas_Totales)) %>%
ungroup()
## `summarise()` has grouped output by 'Año'. You can override using the `.groups`
## argument.
ggplot(ventas_totales_envase, aes(x = Mes, y = Ventas_Totales, group = Año, color = as.factor(Año))) +
geom_line() +
geom_point() +
labs(x = "Mes", y = "Ventas Totales (QTY)", title = "Ventas totales de Envases Retornables por Mes", color = "Año")
#La venta de productos en envase retornable ha experimentado un notable aumento en los últimos dos años. Este incremento puede atribuirse en parte a las exitosas campañas de conciencia ambiental que han generado una mayor aceptación y preferencia por opciones menos dañinas para el ecosistema. Desde 2017 hasta 2018, se observó un ligero incremento en las ventas de envases retornables, lo cual sugiere una creciente tendencia hacia la sostenibilidad. Sin embargo, el aumento fue aún más significativo entre 2018 y 2019, lo cual puede ser indicativo de un mayor número de tiendas adoptando el proyecto Siglo XXI de Arca Continental o de un incremento general en las ventas de productos, tanto retornables como no retornables, en todas las tiendas. Este fenómeno refleja una creciente conciencia ambiental y una preferencia del consumidor por opciones que promuevan la conservación del medio ambiente
#En 2018, las ventas de agua purificada no aumentaron en comparación con las de refrescos o bebidas isotónicas. La preferencia por los refrescos puede atribuirse a su sabor dulce y a la percepción de un mayor valor agregado. Por ejemplo, Coca-Cola vendió hasta 450,000 unidades en su mes más alto, mientras que las ventas totales de agua purificada no superaron las 50,000 unidades en el mismo período.
#¿Puede decirse que la venta mensual de agua está relacionada con la venta mensual de refrescos en los últimos 4 años?
#Las ventas de agua y refrescos muestran un aumento constante durante los mismos meses y a lo largo de los años. Sin embargo, no podemos concluir que el aumento en las ventas de uno cause el incremento en las ventas del otro. Factores como los meses cálidos y el crecimiento poblacional pueden contribuir a este aumento en la demanda de bebidas. La gráfica revela un incremento año tras año en las ventas de agua y refrescos, reflejando posibles cambios en las preferencias del consumidor y en el mercado.
#¿A cuánto ascienden las ventas esperadas para el 2020 en la Coca Cola de 500 ml NR Vidrio?
library(forecast)
## Warning: package 'forecast' was built under R version 4.2.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
ventas_coca_vidrio <- ArcaContinentalDatos %>%
filter(Marca == "Coca-Cola" & Presentacion == "500 ml NR Vidrio") %>%
group_by(Año) %>%
summarise(Ventas_totales = sum(Ventas_totales)) %>%
filter(Ventas_totales != 0)
ts_ventas <- ts(data = ventas_coca_vidrio$Ventas_totales, start = c(2017, 1), frequency = 12)
arima_model <- arima(ts_ventas, order = c(1, 1, 1))
pronostico_2020 <- forecast(arima_model, h = 12)
ventas_esperadas_2020 <- sum(pronostico_2020$mean)
ventas_esperadas_2020
## [1] 4964632
plot(pronostico_2020, main = "Pronóstico de Ventas de Coca-Cola 500 ml NR Vidrio hasta 2020",
xlab = "Año", ylab = "Ventas (Qty)", xlim = c(2017, 2020))
lines(ts_ventas, col = "blue") # Agregar datos históricos
legend("topright", legend = c("Datos Históricos", "Pronóstico"), col = c("blue", "red"), lty = 1)