Importar la BD y comenzar a observarla para así poder detectar errores y modificarlos para después poder trabajar
#Importar
base_de_datos <- read.csv("/Users/gerardorodarte/Desktop/ITESM/Tercer semestre/Bootcamp Programación/Arca/Datos Arca Continental Original.csv")
summary(base_de_datos)
## ID Año Territorio Sub.Territorio
## Min. : 1 Min. :2016 Length:466509 Length:466509
## 1st Qu.:116628 1st Qu.:2017 Class :character Class :character
## Median :233255 Median :2018 Mode :character Mode :character
## Mean :233255 Mean :2018
## 3rd Qu.:349882 3rd Qu.:2019
## Max. :466509 Max. :2019
## CEDI Cliente Nombre Tamaño.Cte.Industria
## Length:466509 Length:466509 Length:466509 Length:466509
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Segmento.Det Marca Presentacion Tamaño
## Length:466509 Length:466509 Length:466509 Length:466509
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Retornable_NR Enero Febrero Marzo
## Length:466509 Length:466509 Length:466509 Length:466509
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Abril Mayo Junio Julio
## Length:466509 Length:466509 Length:466509 Length:466509
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Agosto Septiembre Octubre Noviembre
## Length:466509 Length:466509 Length:466509 Length:466509
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## Diciembre
## Length:466509
## Class :character
## Mode :character
##
##
##
str(base_de_datos)
## 'data.frame': 466509 obs. of 25 variables:
## $ ID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Año : int 2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ...
## $ Territorio : chr "Guadalajara" "Guadalajara" "Guadalajara" "Guadalajara" ...
## $ Sub.Territorio : chr "Belenes" "Belenes" "Belenes" "Belenes" ...
## $ CEDI : chr "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" ...
## $ Cliente : chr "77737" "77737" "77737" "77737" ...
## $ Nombre : chr "ABARR" "ABARR" "ABARR" "ABARR" ...
## $ Tamaño.Cte.Industria: chr "Extra Grande" "Extra Grande" "Extra Grande" "Extra Grande" ...
## $ Segmento.Det : chr "Agua Mineral" "Agua Purificada" "Agua Purificada" "Agua Saborizada" ...
## $ Marca : chr "Topo Chico A.M." "Ciel Agua Purificada" "Ciel Agua Purificada" "Ciel Exprim" ...
## $ Presentacion : chr "600 ml NR" "1 Ltro. N.R." "1.5 Lts. NR" "600 ml NR" ...
## $ Tamaño : chr "Individual" "Individual" "Individual" "Individual" ...
## $ Retornable_NR : chr "No Retornable" "No Retornable" "No Retornable" "No Retornable" ...
## $ Enero : chr "" "" "" "" ...
## $ Febrero : chr "" "2" "" "" ...
## $ Marzo : chr "" "8" "3" "" ...
## $ Abril : chr "" "4" "6" "" ...
## $ Mayo : chr "" "4" "3" "" ...
## $ Junio : chr "" "2" "3" "" ...
## $ Julio : chr "" "2" "3" "" ...
## $ Agosto : chr "" "2" "3" "" ...
## $ Septiembre : chr "" "2" "3" "" ...
## $ Octubre : chr "" "2" "3" "" ...
## $ Noviembre : chr "" "4" "3" "" ...
## $ Diciembre : chr "1" "2" "3" "1" ...
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
count(base_de_datos, Territorio, sort = TRUE)
## Territorio n
## 1 Guadalajara 466508
## 2 Territorio 1
count(base_de_datos, Sub.Territorio, sort = TRUE)
## Sub.Territorio n
## 1 Belenes 208982
## 2 Huentitán 144196
## 3 Toluquilla 113330
## 4 Sub Territorio 1
count(base_de_datos, CEDI, sort= TRUE)
## CEDI n
## 1 Suc. Belenes 208982
## 2 Suc. Huentitán 144196
## 3 Suc. Toluquilla 113330
## 4 CEDI 1
count(base_de_datos,Tamaño.Cte.Industria, sort= TRUE )
## Tamaño.Cte.Industria n
## 1 Extra Grande 230190
## 2 Micro 117110
## 3 Pequeño 77875
## 4 Grande 41333
## 5 Tamaño Cte Industria 1
count(base_de_datos, Segmento.Det, sort= TRUE )
## Segmento.Det n
## 1 Sabores Regular 156242
## 2 Colas Regular 95720
## 3 Colas Light 43807
## 4 Jugos y Néctares 33362
## 5 Bebidas de Fruta 30641
## 6 Agua Purificada 20766
## 7 Agua Mineral 12590
## 8 Isotónicos Regular 11905
## 9 Té Regular 10062
## 10 Agua Saborizada 10056
## 11 Bebidas Energeticas 9847
## 12 Sabores Light 7330
## 13 Leche UHT Saborizada 6395
## 14 Leche UHT Regular 5618
## 15 Bebidas de Soya 5277
## 16 Leche UHT Especializ 4655
## 17 Isotónicos Light 1009
## 18 Cafe Listo Para Bebe 979
## 19 Té Light 241
## 20 Polvos 6
## 21 Segmento Det 1
Marca<- count(base_de_datos, Marca, sort= TRUE )
Presentacion<- count(base_de_datos, Presentacion, sort= TRUE )
tamaño<-count(base_de_datos, Tamaño, sort= TRUE )
count(base_de_datos, Retornable_NR, sort= TRUE )
## Retornable_NR n
## 1 No Retornable 403226
## 2 Retornable 63282
## 3 Retornable_NR 1
#tibble pone los tipos de datos, lo acota al tamaño de la pantalla
tibble(base_de_datos)
## # A tibble: 466,509 × 25
## ID Año Territorio Sub.Terr…¹ CEDI Cliente Nombre Tamañ…² Segme…³ Marca
## <int> <int> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 1 2016 Guadalajara Belenes Suc.… 77737 ABARR Extra … Agua M… Topo…
## 2 2 2016 Guadalajara Belenes Suc.… 77737 ABARR Extra … Agua P… Ciel…
## 3 3 2016 Guadalajara Belenes Suc.… 77737 ABARR Extra … Agua P… Ciel…
## 4 4 2016 Guadalajara Belenes Suc.… 77737 ABARR Extra … Agua S… Ciel…
## 5 5 2016 Guadalajara Belenes Suc.… 77737 ABARR Extra … Agua S… Ciel…
## 6 6 2016 Guadalajara Belenes Suc.… 77737 ABARR Extra … Agua S… Ciel…
## 7 7 2016 Guadalajara Belenes Suc.… 77737 ABARR Extra … Bebida… Dela…
## 8 8 2016 Guadalajara Belenes Suc.… 77737 ABARR Extra … Bebida… Dela…
## 9 9 2016 Guadalajara Belenes Suc.… 77737 ABARR Extra … Bebida… Frut…
## 10 10 2016 Guadalajara Belenes Suc.… 77737 ABARR Extra … Bebida… Pulpy
## # … with 466,499 more rows, 15 more variables: Presentacion <chr>,
## # Tamaño <chr>, Retornable_NR <chr>, Enero <chr>, Febrero <chr>, Marzo <chr>,
## # Abril <chr>, Mayo <chr>, Junio <chr>, Julio <chr>, Agosto <chr>,
## # Septiembre <chr>, Octubre <chr>, Noviembre <chr>, Diciembre <chr>, and
## # abbreviated variable names ¹Sub.Territorio, ²Tamaño.Cte.Industria,
## # ³Segmento.Det
#str pone lo mismo pero cargado a la izquierda, nombre de columnas, tipo de variable y registros que hayan"
str(base_de_datos)
## 'data.frame': 466509 obs. of 25 variables:
## $ ID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Año : int 2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ...
## $ Territorio : chr "Guadalajara" "Guadalajara" "Guadalajara" "Guadalajara" ...
## $ Sub.Territorio : chr "Belenes" "Belenes" "Belenes" "Belenes" ...
## $ CEDI : chr "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" ...
## $ Cliente : chr "77737" "77737" "77737" "77737" ...
## $ Nombre : chr "ABARR" "ABARR" "ABARR" "ABARR" ...
## $ Tamaño.Cte.Industria: chr "Extra Grande" "Extra Grande" "Extra Grande" "Extra Grande" ...
## $ Segmento.Det : chr "Agua Mineral" "Agua Purificada" "Agua Purificada" "Agua Saborizada" ...
## $ Marca : chr "Topo Chico A.M." "Ciel Agua Purificada" "Ciel Agua Purificada" "Ciel Exprim" ...
## $ Presentacion : chr "600 ml NR" "1 Ltro. N.R." "1.5 Lts. NR" "600 ml NR" ...
## $ Tamaño : chr "Individual" "Individual" "Individual" "Individual" ...
## $ Retornable_NR : chr "No Retornable" "No Retornable" "No Retornable" "No Retornable" ...
## $ Enero : chr "" "" "" "" ...
## $ Febrero : chr "" "2" "" "" ...
## $ Marzo : chr "" "8" "3" "" ...
## $ Abril : chr "" "4" "6" "" ...
## $ Mayo : chr "" "4" "3" "" ...
## $ Junio : chr "" "2" "3" "" ...
## $ Julio : chr "" "2" "3" "" ...
## $ Agosto : chr "" "2" "3" "" ...
## $ Septiembre : chr "" "2" "3" "" ...
## $ Octubre : chr "" "2" "3" "" ...
## $ Noviembre : chr "" "4" "3" "" ...
## $ Diciembre : chr "1" "2" "3" "1" ...
#Imprimir los primeros 6 datos de la bd
head(base_de_datos)
## ID Año Territorio Sub.Territorio CEDI Cliente Nombre
## 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
## Tamaño.Cte.Industria Segmento.Det Marca Presentacion
## 1 Extra Grande Agua Mineral Topo Chico A.M. 600 ml NR
## 2 Extra Grande Agua Purificada Ciel Agua Purificada 1 Ltro. N.R.
## 3 Extra Grande Agua Purificada Ciel Agua Purificada 1.5 Lts. NR
## 4 Extra Grande Agua Saborizada Ciel Exprim 600 ml NR
## 5 Extra Grande Agua Saborizada Ciel Mini 300 ML. NR PET
## 6 Extra Grande Agua Saborizada Ciel Saborizada 1 Ltro. N.R.
## Tamaño Retornable_NR Enero Febrero Marzo Abril Mayo Junio Julio Agosto
## 1 Individual No Retornable
## 2 Individual No Retornable 2 8 4 4 2 2 2
## 3 Individual No Retornable 3 6 3 3 3 3
## 4 Individual No Retornable
## 5 Individual No Retornable
## 6 Individual No Retornable 1
## Septiembre Octubre Noviembre Diciembre
## 1 1
## 2 2 2 4 2
## 3 3 3 3 3
## 4 1
## 5 0
## 6
#Imprimir los últimos 6 datos de la bd
tail(base_de_datos)
## ID Año Territorio Sub.Territorio CEDI Cliente Nombre
## 466504 466504 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 466505 466505 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 466506 466506 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 466507 466507 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 466508 466508 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 466509 466509 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## Tamaño.Cte.Industria Segmento.Det Marca Presentacion Tamaño
## 466504 Pequeño Sabores Regular Sprite 250 ml. NR PET Individual
## 466505 Pequeño Sabores Regular Sprite 400 ml NR Individual
## 466506 Pequeño Sabores Regular Sprite 500 ml Ret Individual
## 466507 Pequeño Sabores Regular Sprite 600 ml NR Individual
## 466508 Pequeño Sabores Regular Sprite Lata 235 ml Individual
## 466509 Pequeño Té Regular Fuze Tea 600 ml NR Individual
## Retornable_NR Enero Febrero Marzo Abril Mayo Junio Julio Agosto
## 466504 No Retornable 1 1 1 1
## 466505 No Retornable 0 1 2 2 1
## 466506 Retornable 6 10 4 8 11 8
## 466507 No Retornable 1 3 4 6 2 4 9 1
## 466508 No Retornable 0 0 0 1
## 466509 No Retornable 1 2 1 4 1 16
## Septiembre Octubre Noviembre Diciembre
## 466504
## 466505
## 466506
## 466507
## 466508
## 466509
#Observaciones
#1. De enero a diciembre, las cantidades de enta cienen como caracter, hay que cambiarlo a entero
#Convertir tipos de variables
library(janitor)
##
## Attaching package: 'janitor'
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
library(tidyverse)
## ── Attaching packages
## ───────────────────────────────────────
## tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6 ✔ purrr 0.3.4
## ✔ tibble 3.1.8 ✔ stringr 1.4.1
## ✔ tidyr 1.2.1 ✔ forcats 0.5.2
## ✔ readr 2.1.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
base_de_datos$Cliente <- as.integer(base_de_datos$Cliente)
## Warning: NAs introduced by coercion
str(base_de_datos)
## 'data.frame': 466509 obs. of 25 variables:
## $ ID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Año : int 2016 2016 2016 2016 2016 2016 2016 2016 2016 2016 ...
## $ Territorio : chr "Guadalajara" "Guadalajara" "Guadalajara" "Guadalajara" ...
## $ Sub.Territorio : chr "Belenes" "Belenes" "Belenes" "Belenes" ...
## $ CEDI : chr "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" "Suc. Belenes" ...
## $ Cliente : int 77737 77737 77737 77737 77737 77737 77737 77737 77737 77737 ...
## $ Nombre : chr "ABARR" "ABARR" "ABARR" "ABARR" ...
## $ Tamaño.Cte.Industria: chr "Extra Grande" "Extra Grande" "Extra Grande" "Extra Grande" ...
## $ Segmento.Det : chr "Agua Mineral" "Agua Purificada" "Agua Purificada" "Agua Saborizada" ...
## $ Marca : chr "Topo Chico A.M." "Ciel Agua Purificada" "Ciel Agua Purificada" "Ciel Exprim" ...
## $ Presentacion : chr "600 ml NR" "1 Ltro. N.R." "1.5 Lts. NR" "600 ml NR" ...
## $ Tamaño : chr "Individual" "Individual" "Individual" "Individual" ...
## $ Retornable_NR : chr "No Retornable" "No Retornable" "No Retornable" "No Retornable" ...
## $ Enero : chr "" "" "" "" ...
## $ Febrero : chr "" "2" "" "" ...
## $ Marzo : chr "" "8" "3" "" ...
## $ Abril : chr "" "4" "6" "" ...
## $ Mayo : chr "" "4" "3" "" ...
## $ Junio : chr "" "2" "3" "" ...
## $ Julio : chr "" "2" "3" "" ...
## $ Agosto : chr "" "2" "3" "" ...
## $ Septiembre : chr "" "2" "3" "" ...
## $ Octubre : chr "" "2" "3" "" ...
## $ Noviembre : chr "" "4" "3" "" ...
## $ Diciembre : chr "1" "2" "3" "1" ...
base_de_datos$Enero <- as.integer(base_de_datos$Enero)
## Warning: NAs introduced by coercion
base_de_datos$Febrero <- as.integer(base_de_datos$Febrero)
## Warning: NAs introduced by coercion
base_de_datos$Marzo <- as.integer(base_de_datos$Marzo)
## Warning: NAs introduced by coercion
base_de_datos$Abril <- as.integer(base_de_datos$Abril)
## Warning: NAs introduced by coercion
base_de_datos$Mayo <- as.integer(base_de_datos$Mayo)
## Warning: NAs introduced by coercion
base_de_datos$Junio <- as.integer(base_de_datos$Junio)
## Warning: NAs introduced by coercion
base_de_datos$Julio <- as.integer(base_de_datos$Julio)
## Warning: NAs introduced by coercion
base_de_datos$Agosto <- as.integer(base_de_datos$Agosto)
## Warning: NAs introduced by coercion
base_de_datos$Septiembre <- as.integer(base_de_datos$Septiembre)
## Warning: NAs introduced by coercion
base_de_datos$Octubre <- as.integer(base_de_datos$Octubre)
## Warning: NAs introduced by coercion
base_de_datos$Noviembre <- as.integer(base_de_datos$Noviembre)
## Warning: NAs introduced by coercion
base_de_datos$Diciembre <- as.integer(base_de_datos$Diciembre)
## Warning: NAs introduced by coercion
Sí, se tienen alrededor de 3,149,804 NA´s
# ¿Cuántos NA tengo en la base de datos?
sum(is.na(base_de_datos))
## [1] 3149804
#¿Cuántos NA tengo por variable?
sapply(base_de_datos, function(x) sum(is.na(x)))
## ID Año Territorio
## 0 0 0
## Sub.Territorio CEDI Cliente
## 0 0 1
## Nombre Tamaño.Cte.Industria Segmento.Det
## 0 0 0
## Marca Presentacion Tamaño
## 0 0 0
## Retornable_NR Enero Febrero
## 0 233552 231286
## Marzo Abril Mayo
## 227507 224186 217073
## Junio Julio Agosto
## 215908 223538 220367
## Septiembre Octubre Noviembre
## 337402 338483 338546
## Diciembre
## 341955
Encuéntralos y evita que sean un problema en tu análisis de datos. El dataframe si tiene datos perdidos, de repente se observan números negativos en valores de ventas. Es muy probable que estos valores se hayan perdido a la hora de exportar la BD
summary(base_de_datos)
## ID Año Territorio Sub.Territorio
## Min. : 1 Min. :2016 Length:466509 Length:466509
## 1st Qu.:116628 1st Qu.:2017 Class :character Class :character
## Median :233255 Median :2018 Mode :character Mode :character
## Mean :233255 Mean :2018
## 3rd Qu.:349882 3rd Qu.:2019
## Max. :466509 Max. :2019
##
## CEDI Cliente Nombre Tamaño.Cte.Industria
## Length:466509 Min. : 3 Length:466509 Length:466509
## Class :character 1st Qu.: 2509 Class :character Class :character
## Mode :character Median : 5488 Mode :character Mode :character
## Mean :16768
## 3rd Qu.: 9267
## Max. :99998
## NA's :1
## Segmento.Det Marca Presentacion Tamaño
## Length:466509 Length:466509 Length:466509 Length:466509
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Retornable_NR Enero Febrero Marzo
## Length:466509 Min. :-19.00 Min. :-11.00 Min. :-32.00
## Class :character 1st Qu.: 1.00 1st Qu.: 1.00 1st Qu.: 1.00
## Mode :character Median : 2.00 Median : 2.00 Median : 3.00
## Mean : 9.39 Mean : 9.09 Mean : 10.54
## 3rd Qu.: 6.00 3rd Qu.: 6.00 3rd Qu.: 6.00
## Max. :999.00 Max. :986.00 Max. :986.00
## NA's :233552 NA's :231286 NA's :227507
## Abril Mayo Junio Julio
## Min. :-70.00 Min. :-106.00 Min. :-211.00 Min. :-60.00
## 1st Qu.: 1.00 1st Qu.: 1.00 1st Qu.: 1.00 1st Qu.: 1.00
## Median : 3.00 Median : 3.00 Median : 3.00 Median : 2.00
## Mean : 10.62 Mean : 11.44 Mean : 10.98 Mean : 10.72
## 3rd Qu.: 6.00 3rd Qu.: 7.00 3rd Qu.: 6.00 3rd Qu.: 6.00
## Max. :993.00 Max. : 991.00 Max. : 998.00 Max. :993.00
## NA's :224186 NA's :217073 NA's :215908 NA's :223538
## Agosto Septiembre Octubre Noviembre
## Min. :-211.00 Min. :-527 Min. :-38.0 Min. :-25.0
## 1st Qu.: 1.00 1st Qu.: 1 1st Qu.: 1.0 1st Qu.: 1.0
## Median : 3.00 Median : 3 Median : 3.0 Median : 3.0
## Mean : 10.95 Mean : 12 Mean : 12.1 Mean : 11.8
## 3rd Qu.: 6.00 3rd Qu.: 7 3rd Qu.: 7.0 3rd Qu.: 6.0
## Max. : 999.00 Max. : 993 Max. :998.0 Max. :991.0
## NA's :220367 NA's :337402 NA's :338483 NA's :338546
## Diciembre
## Min. :-28
## 1st Qu.: 1
## Median : 3
## Mean : 13
## 3rd Qu.: 7
## Max. :997
## NA's :341955
Haz un gráfico que permita visualizarlos y utiliza el concepto de media winzorizada o media recortada para evitar que sesguen los valores de los estadísticos descriptivos. El dataframe sí tiene datos atípicos, para visualizarlos utilizamos, además de la ggplot(), un diagrama de caja y bigotes para visualizar un tanto mejor estos datos
#Detectar valores atípicos
boxplot(base_de_datos$Enero, horizontal = TRUE)
boxplot(base_de_datos$Diciembre, horizontal = TRUE)
# Valores atípicos con ggplot2 install.packages("tidyverse")
library(ggplot2)
ggplot(data=base_de_datos, aes(Febrero, CEDI)) + geom_point()
## Warning: Removed 231286 rows containing missing values (geom_point).
Muestra las ventas de Enero a Junio por Cedi.
#SELECT
library(dplyr)
select <- select(base_de_datos, CEDI, Enero:Junio)
head(select)
## CEDI Enero Febrero Marzo Abril Mayo Junio
## 1 Suc. Belenes NA NA NA NA NA NA
## 2 Suc. Belenes NA 2 8 4 4 2
## 3 Suc. Belenes NA NA 3 6 3 3
## 4 Suc. Belenes NA NA NA NA NA NA
## 5 Suc. Belenes NA NA NA NA NA NA
## 6 Suc. Belenes NA NA 1 NA NA NA
Muestra los movimientos por Cedi y tamaño de tienda grande.
#FILTER
library(dplyr)
filter <- filter(base_de_datos, Tamaño.Cte.Industria=="Grande")
head(filter)
## ID Año Territorio Sub.Territorio CEDI Cliente Nombre
## 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
## Tamaño.Cte.Industria Segmento.Det Marca Presentacion
## 1 Grande Agua Mineral Ciel Mineralizada 600 ml NR
## 2 Grande Agua Mineral Topo Chico A.M. 1.5 Lts. NR
## 3 Grande Agua Mineral Topo Chico A.M. 600 ml NR
## 4 Grande Agua Purificada Ciel Agua Purificada 1 Ltro. N.R.
## 5 Grande Agua Purificada Ciel Agua Purificada 1.5 Lts. NR
## 6 Grande Agua Purificada Ciel Agua Purificada 5 Lts. NR
## Tamaño Retornable_NR Enero Febrero Marzo Abril Mayo Junio Julio Agosto
## 1 Individual No Retornable 1 NA NA 1 1 NA NA NA
## 2 Familiar No Retornable NA 2 5 2 2 2 NA 2
## 3 Individual No Retornable 1 3 3 3 4 1 1 3
## 4 Individual No Retornable 8 2 23 13 21 8 15 19
## 5 Individual No Retornable 13 13 25 22 29 13 10 22
## 6 Familiar No Retornable 4 7 14 14 11 11 7 11
## Septiembre Octubre Noviembre Diciembre
## 1 NA NA NA NA
## 2 NA NA NA NA
## 3 NA NA NA NA
## 4 NA NA NA NA
## 5 NA NA NA NA
## 6 NA NA NA NA
#No vale la pena filtrar por CEDI porque todos son CEDIS, por poner un ejemplo, sería como querer filtrar pequeños granos de arena
#con una red con cuadros grandes.
Ordena la base de datos por Cedi, por marca y por presentación.
#ARRANGE
library(dplyr)
arrangeCEDI <- arrange(base_de_datos,CEDI)
head(arrangeCEDI)
## ID Año Territorio Sub.Territorio CEDI Cliente Nombre
## 1 184065 2018 Territorio Sub Territorio CEDI NA Nombre
## 2 1 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 3 2 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 4 3 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 5 4 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## 6 5 2016 Guadalajara Belenes Suc. Belenes 77737 ABARR
## Tamaño.Cte.Industria Segmento.Det Marca Presentacion
## 1 Tamaño Cte Industria Segmento Det Marca Presentacion
## 2 Extra Grande Agua Mineral Topo Chico A.M. 600 ml NR
## 3 Extra Grande Agua Purificada Ciel Agua Purificada 1 Ltro. N.R.
## 4 Extra Grande Agua Purificada Ciel Agua Purificada 1.5 Lts. NR
## 5 Extra Grande Agua Saborizada Ciel Exprim 600 ml NR
## 6 Extra Grande Agua Saborizada Ciel Mini 300 ML. NR PET
## Tamaño Retornable_NR Enero Febrero Marzo Abril Mayo Junio Julio Agosto
## 1 Tamaño Retornable_NR NA NA NA NA NA NA NA NA
## 2 Individual No Retornable NA NA NA NA NA NA NA NA
## 3 Individual No Retornable NA 2 8 4 4 2 2 2
## 4 Individual No Retornable NA NA 3 6 3 3 3 3
## 5 Individual No Retornable NA NA NA NA NA NA NA NA
## 6 Individual No Retornable NA NA NA NA NA NA NA NA
## Septiembre Octubre Noviembre Diciembre
## 1 NA NA NA NA
## 2 NA NA NA 1
## 3 2 2 4 2
## 4 3 3 3 3
## 5 NA NA NA 1
## 6 NA NA 0 NA
arrangeMARCA <-arrange(base_de_datos, Marca)
head(arrangeMARCA)
## ID Año Territorio Sub.Territorio CEDI Cliente Nombre
## 1 184080 2018 Guadalajara Huentitán Suc. Huentitán 2658 DIAZ
## 2 184081 2018 Guadalajara Huentitán Suc. Huentitán 2658 DIAZ
## 3 184296 2018 Guadalajara Huentitán Suc. Huentitán 2682 VARGA
## 4 184297 2018 Guadalajara Huentitán Suc. Huentitán 2682 VARGA
## 5 184410 2018 Guadalajara Huentitán Suc. Huentitán 2687 MARIA
## 6 184519 2018 Guadalajara Huentitán Suc. Huentitán 2713 MARIA
## Tamaño.Cte.Industria Segmento.Det Marca Presentacion Tamaño
## 1 Extra Grande Bebidas de Soya AdeS Frutal 200 ml Tetra Individual
## 2 Extra Grande Bebidas de Soya AdeS Frutal 946 ml NR Tetra Familiar
## 3 Extra Grande Bebidas de Soya AdeS Frutal 200 ml Tetra Individual
## 4 Extra Grande Bebidas de Soya AdeS Frutal 946 ml NR Tetra Familiar
## 5 Extra Grande Bebidas de Soya AdeS Frutal 200 ml Tetra Individual
## 6 Extra Grande Bebidas de Soya AdeS Frutal 200 ml Tetra Individual
## Retornable_NR Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre
## 1 No Retornable NA NA NA NA NA NA NA NA NA
## 2 No Retornable NA NA NA NA NA NA NA NA NA
## 3 No Retornable NA NA NA NA NA NA NA NA NA
## 4 No Retornable NA NA NA NA NA NA NA NA NA
## 5 No Retornable NA NA NA NA NA NA NA NA NA
## 6 No Retornable NA NA NA NA NA NA NA NA NA
## Octubre Noviembre Diciembre
## 1 NA 1 NA
## 2 NA NA 0
## 3 NA 0 0
## 4 NA 2 NA
## 5 NA 0 0
## 6 NA 0 NA
arrangePRESENTACION <-arrange(base_de_datos, Presentacion)
head(arrangePRESENTACION)
## ID Año Territorio Sub.Territorio CEDI Cliente Nombre
## 1 262937 2019 Guadalajara Toluquilla Suc. Toluquilla 3961 MINI
## 2 263111 2019 Guadalajara Toluquilla Suc. Toluquilla 4026 ABARR
## 3 263199 2019 Guadalajara Toluquilla Suc. Toluquilla 4050 MARTI
## 4 263295 2019 Guadalajara Toluquilla Suc. Toluquilla 4122 ESMER
## 5 263405 2019 Guadalajara Toluquilla Suc. Toluquilla 4167 MINI
## 6 263521 2019 Guadalajara Toluquilla Suc. Toluquilla 4169 CREME
## Tamaño.Cte.Industria Segmento.Det Marca Presentacion Tamaño
## 1 Extra Grande Colas Regular Coca-Cola 1 Ltro Ret. Familiar
## 2 Extra Grande Colas Regular Coca-Cola 1 Ltro Ret. Familiar
## 3 Extra Grande Colas Regular Coca-Cola 1 Ltro Ret. Familiar
## 4 Extra Grande Colas Regular Coca-Cola 1 Ltro Ret. Familiar
## 5 Extra Grande Colas Regular Coca-Cola 1 Ltro Ret. Familiar
## 6 Extra Grande Colas Regular Coca-Cola 1 Ltro Ret. Familiar
## Retornable_NR Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre
## 1 Retornable NA NA 30 129 222 127 142 186 NA
## 2 Retornable NA NA 8 85 53 38 44 44 NA
## 3 Retornable NA NA NA 21 101 97 40 NA NA
## 4 Retornable NA NA 34 104 112 63 89 93 NA
## 5 Retornable NA NA 15 4 4 17 6 13 NA
## 6 Retornable NA NA 53 159 125 116 120 123 NA
## Octubre Noviembre Diciembre
## 1 NA NA NA
## 2 NA NA NA
## 3 NA NA NA
## 4 NA NA NA
## 5 NA NA NA
## 6 NA NA NA
arrangeGENERAL <- arrange(base_de_datos, CEDI, Marca, Presentacion)
head(arrangeGENERAL)
## ID Año Territorio Sub.Territorio CEDI Cliente Nombre
## 1 184065 2018 Territorio Sub Territorio CEDI NA Nombre
## 2 200110 2018 Guadalajara Belenes Suc. Belenes 7800 SAN I
## 3 200224 2018 Guadalajara Belenes Suc. Belenes 7875 ABARR
## 4 200461 2018 Guadalajara Belenes Suc. Belenes 7917 ABARR
## 5 200576 2018 Guadalajara Belenes Suc. Belenes 8010 ABARR
## 6 200682 2018 Guadalajara Belenes Suc. Belenes 8186 SUPER
## Tamaño.Cte.Industria Segmento.Det Marca Presentacion Tamaño
## 1 Tamaño Cte Industria Segmento Det Marca Presentacion Tamaño
## 2 Extra Grande Bebidas de Soya AdeS Frutal 200 ml Tetra Individual
## 3 Extra Grande Bebidas de Soya AdeS Frutal 200 ml Tetra Individual
## 4 Extra Grande Bebidas de Soya AdeS Frutal 200 ml Tetra Individual
## 5 Extra Grande Bebidas de Soya AdeS Frutal 200 ml Tetra Individual
## 6 Extra Grande Bebidas de Soya AdeS Frutal 200 ml Tetra Individual
## Retornable_NR Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre
## 1 Retornable_NR NA NA NA NA NA NA NA NA NA
## 2 No Retornable NA NA NA NA NA NA NA NA NA
## 3 No Retornable NA NA NA NA NA NA NA NA NA
## 4 No Retornable NA NA NA NA NA NA NA NA NA
## 5 No Retornable NA NA NA NA NA NA NA NA NA
## 6 No Retornable NA NA NA NA NA NA NA NA NA
## Octubre Noviembre Diciembre
## 1 NA NA NA
## 2 NA 1 1
## 3 NA 2 NA
## 4 NA 1 NA
## 5 NA 6 3
## 6 NA 6 3
Cambia el nombre del campo Sub Territorio por Sub_territorio
#RENAME
library(dplyr)
rename <- rename(base_de_datos, Sub_territorio = Sub.Territorio)
head(rename)
## ID Año Territorio Sub_territorio CEDI Cliente Nombre
## 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
## Tamaño.Cte.Industria Segmento.Det Marca Presentacion
## 1 Extra Grande Agua Mineral Topo Chico A.M. 600 ml NR
## 2 Extra Grande Agua Purificada Ciel Agua Purificada 1 Ltro. N.R.
## 3 Extra Grande Agua Purificada Ciel Agua Purificada 1.5 Lts. NR
## 4 Extra Grande Agua Saborizada Ciel Exprim 600 ml NR
## 5 Extra Grande Agua Saborizada Ciel Mini 300 ML. NR PET
## 6 Extra Grande Agua Saborizada Ciel Saborizada 1 Ltro. N.R.
## Tamaño Retornable_NR Enero Febrero Marzo Abril Mayo Junio Julio Agosto
## 1 Individual No Retornable NA NA NA NA NA NA NA NA
## 2 Individual No Retornable NA 2 8 4 4 2 2 2
## 3 Individual No Retornable NA NA 3 6 3 3 3 3
## 4 Individual No Retornable NA NA NA NA NA NA NA NA
## 5 Individual No Retornable NA NA NA NA NA NA NA NA
## 6 Individual No Retornable NA NA 1 NA NA NA NA NA
## Septiembre Octubre Noviembre Diciembre
## 1 NA NA NA 1
## 2 2 2 4 2
## 3 3 3 3 3
## 4 NA NA NA 1
## 5 NA NA 0 NA
## 6 NA NA NA NA
Agrega un campo calculado con las ventas del primer semestre y muestra las ventas del primer semestre por marca.
a <-sum(base_de_datos$Enero, base_de_datos$Febrero, base_de_datos$Marzo, base_de_datos$Abril, base_de_datos$Mayo, base_de_datos$Junio, na.rm = TRUE)
a
## [1] 15025169
library(dplyr)
mutatet <- mutate(base_de_datos,Primer_semestre = a)
head(mutatet)
## ID Año Territorio Sub.Territorio CEDI Cliente Nombre
## 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
## Tamaño.Cte.Industria Segmento.Det Marca Presentacion
## 1 Extra Grande Agua Mineral Topo Chico A.M. 600 ml NR
## 2 Extra Grande Agua Purificada Ciel Agua Purificada 1 Ltro. N.R.
## 3 Extra Grande Agua Purificada Ciel Agua Purificada 1.5 Lts. NR
## 4 Extra Grande Agua Saborizada Ciel Exprim 600 ml NR
## 5 Extra Grande Agua Saborizada Ciel Mini 300 ML. NR PET
## 6 Extra Grande Agua Saborizada Ciel Saborizada 1 Ltro. N.R.
## Tamaño Retornable_NR Enero Febrero Marzo Abril Mayo Junio Julio Agosto
## 1 Individual No Retornable NA NA NA NA NA NA NA NA
## 2 Individual No Retornable NA 2 8 4 4 2 2 2
## 3 Individual No Retornable NA NA 3 6 3 3 3 3
## 4 Individual No Retornable NA NA NA NA NA NA NA NA
## 5 Individual No Retornable NA NA NA NA NA NA NA NA
## 6 Individual No Retornable NA NA 1 NA NA NA NA NA
## Septiembre Octubre Noviembre Diciembre Primer_semestre
## 1 NA NA NA 1 15025169
## 2 2 2 4 2 15025169
## 3 3 3 3 3 15025169
## 4 NA NA NA 1 15025169
## 5 NA NA 0 NA 15025169
## 6 NA NA NA NA 15025169
Mutate por marca
#MUTATEPORMARCA
por_marca <- group_by(base_de_datos, Marca)
marcasyventas <- summarize(por_marca, Ventas_Primer_Semestre_Por_Marca=sum(Enero, Febrero, Marzo, Abril, Mayo, Junio, na.rm=TRUE))
print(marcasyventas, n=56)
## # A tibble: 56 × 2
## Marca Ventas_Primer_Semestre_Por_Marca
## <chr> <int>
## 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 863355
## 8 Ciel Exprim 33959
## 9 Ciel Mineralizada 18043
## 10 Ciel Mini 4942
## 11 Ciel Saborizada 6545
## 12 Coca-Cola 10916376
## 13 Coca-Cola Life 6958
## 14 Coca-Cola Light 641160
## 15 Coca-Cola Light Sin 257
## 16 Coca-Cola Sin Azúcar 119168
## 17 Coca-Cola Zero 54630
## 18 Del Valle 198545
## 19 Del Valle Bits 0
## 20 Del Valle Blends 207
## 21 Del Valle Nutridefen 581
## 22 Del Valle NutriForte 105
## 23 Del Valle NutriVeget 0
## 24 Del Valle Reserva 39939
## 25 Del Valle y Nada 84066
## 26 Delaware Punch 29829
## 27 Fanta 355534
## 28 Fanta Zero 163
## 29 Fresca 205936
## 30 Fresca Zero 63
## 31 Frutsi 47832
## 32 Fuze Tea 78075
## 33 Fuze Tea Light 474
## 34 Glacéau 5891
## 35 Joya 2696
## 36 Manzana Lift 202237
## 37 Manzana Lift Zero 129
## 38 Marca 0
## 39 Mixtos 86
## 40 Monster Energy 10966
## 41 Powerade 98485
## 42 Powerade Zero 1410
## 43 Pulpy 4603
## 44 Santa Clara Deslacto 21868
## 45 Santa Clara Entera 17124
## 46 Santa Clara Light 5392
## 47 Santa Clara Saboriza 21086
## 48 Senzao 25702
## 49 Sidral Mundet 144758
## 50 Sidral Mundet Light 0
## 51 Sprite 480446
## 52 Sprite Zero 30283
## 53 Topo Chico A.M. 55201
## 54 Topo Chico Sangría 0
## 55 Topo Chico Sangría L 0
## 56 Valle Frut 171008
No se puede agregar a la base porque solo tiene 56 filas
Obtén la media de las ventas del primer semestre agrupado por marca, presentación y tamaño.
Por Marca
#SUMMARISE
por_prommarca <- group_by(base_de_datos, Marca)
promediomarcasyventas <- summarize(por_prommarca, Promedio_Ventas_Primer_Semestre_Por_Marca=mean (Enero&Febrero&Marzo&Abril&Mayo&Junio, na.rm=TRUE))
promediomarcasyventas
## # A tibble: 56 × 2
## Marca Promedio_Ventas_Primer_Semestre_Por_Marca
## <chr> <dbl>
## 1 AdeS Frutal 0.0654
## 2 AdeS Lácteo 0.0434
## 3 Barista Bros 0
## 4 Bebere 0.190
## 5 Burn 0.0646
## 6 Café Blak 1
## 7 Ciel Agua Purificada 0.926
## 8 Ciel Exprim 0.998
## 9 Ciel Mineralizada 0.972
## 10 Ciel Mini 0.255
## # … with 46 more rows
Por Presentación
por_prompresentacion <- group_by(base_de_datos, Presentacion)
promediopresentacionyventas <- summarize(por_prompresentacion, Promedio_Ventas_Primer_Semestre_Por_Presentacion=mean(Enero&Febrero&Marzo&Abril&Mayo&Junio, na.rm=TRUE))
promediopresentacionyventas
## # A tibble: 57 × 2
## Presentacion Promedio_Ventas_Primer_Semestre_Por_Presentacion
## <chr> <dbl>
## 1 1 Ltro Ret. NaN
## 2 1 Ltro. N.R. 0.989
## 3 1 Ltro. Tetra 0.947
## 4 1.250 Lts NR 0.999
## 5 1.5 Lts. NR 0.994
## 6 1.5 Lts. Ret 0.995
## 7 1.750 Lts NR 0.994
## 8 100 ml NR Tetra 0.0710
## 9 12 Oz. NR Pet 0.957
## 10 12 Oz. NR Vidrio 0.9
## # … with 47 more rows
Por tamaño
por_promtamaño <- group_by(base_de_datos, Tamaño)
promediotamañoyventas <- summarize(por_promtamaño, Promedio_Ventas_Primer_Semestre_Por_Tamaño=mean(Enero&Febrero&Marzo&Abril&Mayo&Junio, na.rm=TRUE))
promediotamañoyventas
## # A tibble: 3 × 2
## Tamaño Promedio_Ventas_Primer_Semestre_Por_Tamaño
## <chr> <dbl>
## 1 Familiar 0.966
## 2 Individual 0.565
## 3 Tamaño NaN
En las indicaciones no se especifíca sobre qué datos hay que obtener las medidas de tendencia central, por lo tanto, la mejor idea es poner un summary de la base de datos para así obtener la media y mediana,
summary(base_de_datos)
## ID Año Territorio Sub.Territorio
## Min. : 1 Min. :2016 Length:466509 Length:466509
## 1st Qu.:116628 1st Qu.:2017 Class :character Class :character
## Median :233255 Median :2018 Mode :character Mode :character
## Mean :233255 Mean :2018
## 3rd Qu.:349882 3rd Qu.:2019
## Max. :466509 Max. :2019
##
## CEDI Cliente Nombre Tamaño.Cte.Industria
## Length:466509 Min. : 3 Length:466509 Length:466509
## Class :character 1st Qu.: 2509 Class :character Class :character
## Mode :character Median : 5488 Mode :character Mode :character
## Mean :16768
## 3rd Qu.: 9267
## Max. :99998
## NA's :1
## Segmento.Det Marca Presentacion Tamaño
## Length:466509 Length:466509 Length:466509 Length:466509
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Retornable_NR Enero Febrero Marzo
## Length:466509 Min. :-19.00 Min. :-11.00 Min. :-32.00
## Class :character 1st Qu.: 1.00 1st Qu.: 1.00 1st Qu.: 1.00
## Mode :character Median : 2.00 Median : 2.00 Median : 3.00
## Mean : 9.39 Mean : 9.09 Mean : 10.54
## 3rd Qu.: 6.00 3rd Qu.: 6.00 3rd Qu.: 6.00
## Max. :999.00 Max. :986.00 Max. :986.00
## NA's :233552 NA's :231286 NA's :227507
## Abril Mayo Junio Julio
## Min. :-70.00 Min. :-106.00 Min. :-211.00 Min. :-60.00
## 1st Qu.: 1.00 1st Qu.: 1.00 1st Qu.: 1.00 1st Qu.: 1.00
## Median : 3.00 Median : 3.00 Median : 3.00 Median : 2.00
## Mean : 10.62 Mean : 11.44 Mean : 10.98 Mean : 10.72
## 3rd Qu.: 6.00 3rd Qu.: 7.00 3rd Qu.: 6.00 3rd Qu.: 6.00
## Max. :993.00 Max. : 991.00 Max. : 998.00 Max. :993.00
## NA's :224186 NA's :217073 NA's :215908 NA's :223538
## Agosto Septiembre Octubre Noviembre
## Min. :-211.00 Min. :-527 Min. :-38.0 Min. :-25.0
## 1st Qu.: 1.00 1st Qu.: 1 1st Qu.: 1.0 1st Qu.: 1.0
## Median : 3.00 Median : 3 Median : 3.0 Median : 3.0
## Mean : 10.95 Mean : 12 Mean : 12.1 Mean : 11.8
## 3rd Qu.: 6.00 3rd Qu.: 7 3rd Qu.: 7.0 3rd Qu.: 6.0
## Max. : 999.00 Max. : 993 Max. :998.0 Max. :991.0
## NA's :220367 NA's :337402 NA's :338483 NA's :338546
## Diciembre
## Min. :-28
## 1st Qu.: 1
## Median : 3
## Mean : 13
## 3rd Qu.: 7
## Max. :997
## NA's :341955
En tanto a la moda, elegí dos valores para obtenerla, dada una función
# Función para hallar la moda
mode <- function(x){
ux <- unique(x)
ux[which.max(tabulate(match(x,ux)))]
}
# Nota: Si ningún dato se repite, la función coloca el primer valor en lugar de marcar error.
Moda de Enero
mode(base_de_datos$Enero)
## [1] NA
La moda es “NA” porque es el valor más repetido
Mode de Cliente
mode(base_de_datos$Cliente)
## [1] 286
El cliente 286 es el más presente en la base de datos
En este ejercicio se perfeccionó el uso de funciones y de manipulación de datos en R, principalmente se manipularon los datos de la BD de ArcaContinental y se pusieron en práctica las funciones de Select, Filter, Arrange, Rename, Mutate y Summarise, todo esto con el propósito de aplicarlo en futuros proyectos y bases de datos