#Instalar paquetes y llamar librerias
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)
#Actividad Individual 2
#Identificar en el dataframe de la Situación Problema 2 las estructuras de datos que investigaste en tu tarea colaborativa 1 (Vectores, Listas, Factores, Matrices)
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 ...
#¿El dataframe tiene NAs?
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
#¿El dataframe tiene datos perdidos?
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
#detectar valores atípicos
boxplot(ArcaContinentalDatos$Enero)
boxplot(ArcaContinentalDatos$Febrero)
boxplot(ArcaContinentalDatos$Marzo)
boxplot(ArcaContinentalDatos$Abril)
boxplot(ArcaContinentalDatos$Mayo)
boxplot(ArcaContinentalDatos$Junio)
boxplot(ArcaContinentalDatos$Julio)
boxplot(ArcaContinentalDatos$Agosto)
boxplot(ArcaContinentalDatos$Septiembre)
boxplot(ArcaContinentalDatos$Octubre)
boxplot(ArcaContinentalDatos$Noviembre)
boxplot(ArcaContinentalDatos$Diciembre)
#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"
#Tarea Colaborativa 2 # Hallazgo 1: Ventas totales por CEDI y año
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>
# Hallazgo 1: Ventas totales por CEDI y año
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)
#Hallazgo 3: Tamaño de tienda con las mayores ventas promedio
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)
#Hallazgo 4: Comparación de ventas entre diferentes tipos de presentación de productos
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)
ventas_por_marca <- ArcaContinentalDatos %>%
group_by(Marca) %>%
summarise(Ventas_totales = sum(Ventas_totales, na.rm = TRUE)) %>%
arrange(desc(Ventas_totales))
print(ventas_por_marca)
## # A tibble: 55 × 2
## Marca Ventas_totales
## <chr> <dbl>
## 1 Coca-Cola 21611127
## 2 Ciel Agua Purificada 1452645
## 3 Coca-Cola Light 1155851
## 4 Sprite 857945
## 5 Fanta 624611
## 6 Fresca 366507
## 7 Manzana Lift 363973
## 8 Del Valle 337109
## 9 Valle Frut 293074
## 10 Sidral Mundet 260751
## # ℹ 45 more rows
df_hallazgo_5 <- as.data.frame(ventas_por_marca)
#Hallazgo 6: Tendencia de ventas a lo largo del año
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)