Para Arca Continental, tambien es vital que las tienditas de la esquina sigan existiendo ya que los mayores margenes de ganancia en la venta de sus productos los obtiene a traves de este canal.
# install.packages("tidyverse")
library(tidyverse)
# install.packages("dplyr")
library(dplyr)
# install.packages("lubridate")
library(lubridate)
# install.packages("plyr")
library(plyr)
# install.packages("readxl")
library(readxl)
# install.packages("ggplot2")
library(ggplot2)
# install.packages("forecast")
library(forecast)
# file.choose()
df <- read_excel("/Users/maya/Downloads/Datos Arca Continental Original.xlsx")
summary(df)
## 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 Min. : -19.0 Min. : -11.00 Min. : -32.00
## Class :character 1st Qu.: 1.0 1st Qu.: 1.00 1st Qu.: 1.00
## Mode :character Median : 2.0 Median : 2.00 Median : 3.00
## Mean : 10.1 Mean : 9.76 Mean : 11.36
## 3rd Qu.: 6.0 3rd Qu.: 6.00 3rd Qu.: 6.00
## Max. :42736.0 Max. :42767.00 Max. :42795.00
## NA's :233480 NA's :231213 NA's :227420
## Abril Mayo Junio Julio
## Min. : -70.00 Min. : -106.00 Min. : -211.0 Min. : -60.00
## 1st Qu.: 1.00 1st Qu.: 1.00 1st Qu.: 1.0 1st Qu.: 1.00
## Median : 3.00 Median : 3.00 Median : 3.0 Median : 2.00
## Mean : 11.71 Mean : 12.75 Mean : 12.2 Mean : 11.75
## 3rd Qu.: 6.00 3rd Qu.: 7.00 3rd Qu.: 6.0 3rd Qu.: 6.00
## Max. :42826.00 Max. :42856.00 Max. :42887.0 Max. :42917.00
## NA's :224057 NA's :216910 NA's :215753 NA's :223411
## Agosto Septiembre Octubre Noviembre
## Min. : -211.00 Min. : -527.0 Min. : -38.0 Min. : -25.0
## 1st Qu.: 1.00 1st Qu.: 1.0 1st Qu.: 1.0 1st Qu.: 1.0
## Median : 3.00 Median : 3.0 Median : 3.0 Median : 3.0
## Mean : 11.98 Mean : 13.4 Mean : 13.7 Mean : 13.3
## 3rd Qu.: 6.00 3rd Qu.: 7.0 3rd Qu.: 7.0 3rd Qu.: 6.0
## Max. :42948.00 Max. :42979.0 Max. :43009.0 Max. :43040.0
## NA's :220242 NA's :337314 NA's :338386 NA's :338460
## Diciembre
## Min. : -28.0
## 1st Qu.: 1.0
## Median : 3.0
## Mean : 14.8
## 3rd Qu.: 7.0
## Max. :43070.0
## NA's :341855
str(df)
## 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 ...
head(df,n=10)
## # A tibble: 10 × 25
## 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
## # ℹ 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>
tail(df,n=10)
## # A tibble: 10 × 25
## ID Año Territorio `Sub Territorio` CEDI Cliente Nombre
## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr>
## 1 466500 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 2 466501 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 3 466502 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 4 466503 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 5 466504 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 6 466505 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 7 466506 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 8 466507 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 9 466508 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## 10 466509 2019 Guadalajara Huentitán Suc. Huentitán 4531 HECTO
## # ℹ 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>
colnames(df) <- gsub(" ","_", colnames(df))
dplyr :: count(df,Territorio, sort=TRUE)
## # A tibble: 2 × 2
## Territorio n
## <chr> <int>
## 1 Guadalajara 466508
## 2 Territorio 1
dplyr :: count(df,Sub_Territorio, sort=TRUE)
## # A tibble: 4 × 2
## Sub_Territorio n
## <chr> <int>
## 1 Belenes 208982
## 2 Huentitán 144196
## 3 Toluquilla 113330
## 4 Sub Territorio 1
dplyr :: count(df,CEDI, sort=TRUE)
## # A tibble: 4 × 2
## CEDI n
## <chr> <int>
## 1 Suc. Belenes 208982
## 2 Suc. Huentitán 144196
## 3 Suc. Toluquilla 113330
## 4 CEDI 1
dplyr :: count(df,Cliente, sort=TRUE)
## # A tibble: 5,249 × 2
## Cliente n
## <chr> <int>
## 1 0286 647
## 2 2912 586
## 3 2661 537
## 4 7821 531
## 5 1859 525
## 6 5583 516
## 7 9998 508
## 8 3601 506
## 9 5879 499
## 10 0335 496
## # ℹ 5,239 more rows
dplyr :: count(df,Nombre, sort=TRUE)
## # A tibble: 1,090 × 2
## Nombre n
## <chr> <int>
## 1 ABARR 71186
## 2 MARIA 39816
## 3 JOSE 17479
## 4 JUAN 7580
## 5 MARTH 5759
## 6 MISCE 5700
## 7 LUIS 5585
## 8 SUPER 4565
## 9 CARLO 3991
## 10 ROSA 3890
## # ℹ 1,080 more rows
dplyr :: count(df,Tamaño_Cte_Industria, sort=TRUE)
## # A tibble: 5 × 2
## Tamaño_Cte_Industria n
## <chr> <int>
## 1 Extra Grande 230190
## 2 Micro 117110
## 3 Pequeño 77875
## 4 Grande 41333
## 5 Tamaño Cte Industria 1
dplyr :: count(df,Segmento_Det, sort=TRUE)
## # A tibble: 21 × 2
## Segmento_Det n
## <chr> <int>
## 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 more rows
dplyr :: count(df,Marca, sort=TRUE)
## # A tibble: 56 × 2
## Marca n
## <chr> <int>
## 1 Coca-Cola 95720
## 2 Sprite 37925
## 3 Fanta 35728
## 4 Fresca 26435
## 5 Manzana Lift 25598
## 6 Coca-Cola Light 21926
## 7 Del Valle 21325
## 8 Ciel Agua Purificada 20766
## 9 Sidral Mundet 17150
## 10 Valle Frut 15808
## # ℹ 46 more rows
dplyr :: count(df,Presentacion, sort=TRUE)
## # A tibble: 57 × 2
## Presentacion n
## <chr> <int>
## 1 600 ml NR 74008
## 2 1 Ltro. N.R. 36930
## 3 2 Lts. NR 36415
## 4 500 ml Ret 35165
## 5 1.5 Lts. NR 30637
## 6 Lata 235 ml 24551
## 7 400 ml NR 22877
## 8 250 ml. NR PET 21735
## 9 500 ml NR Vidrio 18758
## 10 2.5 Lts. NR 13235
## # ℹ 47 more rows
dplyr :: count(df,Tamaño, sort=TRUE)
## # A tibble: 3 × 2
## Tamaño n
## <chr> <int>
## 1 Individual 328513
## 2 Familiar 137995
## 3 Tamaño 1
dplyr :: count(df,Retornable_NR, sort=TRUE)
## # A tibble: 3 × 2
## Retornable_NR n
## <chr> <int>
## 1 No Retornable 403226
## 2 Retornable 63282
## 3 Retornable_NR 1
# Eliminar columnas
df1 <- df
df1 <- df1[-184065,] # Era un renglon con los totales de la tabla
summary(df1)
## ID Año Territorio Sub_Territorio
## Min. : 1 Min. :2016 Length:466508 Length:466508
## 1st Qu.:116628 1st Qu.:2017 Class :character Class :character
## Median :233256 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:466508 Length:466508 Length:466508 Length:466508
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Segmento_Det Marca Presentacion Tamaño
## Length:466508 Length:466508 Length:466508 Length:466508
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Retornable_NR Enero Febrero Marzo
## Length:466508 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.91 Mean : 9.57 Mean : 11.18
## 3rd Qu.: 6.00 3rd Qu.: 6.00 3rd Qu.: 6.00
## Max. :5333.00 Max. :4995.00 Max. :5636.00
## NA's :233480 NA's :231213 NA's :227420
## 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 : 11.53 Mean : 12.58 Mean : 12.03 Mean : 11.58
## 3rd Qu.: 6.00 3rd Qu.: 7.00 3rd Qu.: 6.00 3rd Qu.: 6.00
## Max. :6164.00 Max. :6759.00 Max. :6033.00 Max. :6735.00
## NA's :224057 NA's :216910 NA's :215753 NA's :223411
## Agosto Septiembre Octubre Noviembre
## Min. :-211.00 Min. :-527.0 Min. : -38.0 Min. : -25
## 1st Qu.: 1.00 1st Qu.: 1.0 1st Qu.: 1.0 1st Qu.: 1
## Median : 3.00 Median : 3.0 Median : 3.0 Median : 3
## Mean : 11.81 Mean : 13.1 Mean : 13.4 Mean : 13
## 3rd Qu.: 6.00 3rd Qu.: 7.0 3rd Qu.: 7.0 3rd Qu.: 6
## Max. :6065.00 Max. :6509.0 Max. :6326.0 Max. :5319
## NA's :220242 NA's :337314 NA's :338386 NA's :338460
## Diciembre
## Min. : -28.0
## 1st Qu.: 1.0
## Median : 3.0
## Mean : 14.4
## 3rd Qu.: 7.0
## Max. :6182.0
## NA's :341855
##Tecnica 2. Remover valores duplicados
# ¿Cuantos rengoles duplicados tenemos?
sum(duplicated(df))
## [1] 0
# ¿Cuales son los rengolnes duplicados?
df[duplicated(df),]
## # A tibble: 0 × 25
## # ℹ 25 variables: ID <dbl>, Año <dbl>, Territorio <chr>, Sub_Territorio <chr>,
## # CEDI <chr>, Cliente <chr>, Nombre <chr>, 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>
##Tecnica 3. Eliminar los errores tipograficos y similares
# Cantidades absolutas
df2 <- df1
df2$Enero <- abs(df2$Enero)
df2$Febrero <- abs(df2$Febrero)
df2$Marzo <- abs(df2$Marzo)
df2$Abril <- abs(df2$Abril)
df2$Mayo <- abs(df2$Mayo)
df2$Junio <- abs(df2$Junio)
df2$Julio <- abs(df2$Julio)
df2$Agosto <- abs(df2$Agosto)
df2$Septiembre <- abs(df2$Septiembre)
df2$Octubre <- abs(df2$Octubre)
df2$Noviembre <- abs(df2$Noviembre)
df2$Diciembre <- abs(df2$Diciembre)
summary(df2)
## ID Año Territorio Sub_Territorio
## Min. : 1 Min. :2016 Length:466508 Length:466508
## 1st Qu.:116628 1st Qu.:2017 Class :character Class :character
## Median :233256 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:466508 Length:466508 Length:466508 Length:466508
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Segmento_Det Marca Presentacion Tamaño
## Length:466508 Length:466508 Length:466508 Length:466508
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## Retornable_NR Enero Febrero Marzo
## Length:466508 Min. : 0.00 Min. : 0.00 Min. : 0.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.92 Mean : 9.58 Mean : 11.18
## 3rd Qu.: 6.00 3rd Qu.: 6.00 3rd Qu.: 6.00
## Max. :5333.00 Max. :4995.00 Max. :5636.00
## NA's :233480 NA's :231213 NA's :227420
## Abril Mayo Junio Julio
## Min. : 0.00 Min. : 0.00 Min. : 0.00 Min. : 0.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 : 11.53 Mean : 12.59 Mean : 12.04 Mean : 11.58
## 3rd Qu.: 6.00 3rd Qu.: 7.00 3rd Qu.: 6.00 3rd Qu.: 6.00
## Max. :6164.00 Max. :6759.00 Max. :6033.00 Max. :6735.00
## NA's :224057 NA's :216910 NA's :215753 NA's :223411
## Agosto Septiembre Octubre Noviembre
## Min. : 0.00 Min. : 0.0 Min. : 0.0 Min. : 0
## 1st Qu.: 1.00 1st Qu.: 1.0 1st Qu.: 1.0 1st Qu.: 1
## Median : 3.00 Median : 3.0 Median : 3.0 Median : 3
## Mean : 11.82 Mean : 13.1 Mean : 13.4 Mean : 13
## 3rd Qu.: 6.00 3rd Qu.: 7.0 3rd Qu.: 7.0 3rd Qu.: 6
## Max. :6065.00 Max. :6509.0 Max. :6326.0 Max. :5319
## NA's :220242 NA's :337314 NA's :338386 NA's :338460
## Diciembre
## Min. : 0.0
## 1st Qu.: 1.0
## Median : 3.0
## Mean : 14.5
## 3rd Qu.: 7.0
## Max. :6182.0
## NA's :341855
##Tecnica 4. Convertir tipos de datos No Aplica
##Tecnica 5. Reemplazar nvalor faltantes
# ¿Cuantos NAs tengo en la base de datos?
sum(is.na(df2))
## [1] 3148501
# ¿Cuantos NAs tengo por variable?
sapply(df, function(x) sum(is.na(x)))
## 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
# Opcion 1. Borrar todos los NAs de una tabla
# bd100 <- na.omit(bd)
# Opcion 2. Reemplazar los NAs con CEROS
df3 <- df2
df3[is.na(df3)]<-0
# Opcion 3. Reemplazar NAs con prom
# bd102 <- bd
# bd102$PLU[is.na(bd101$PLU)]<-mean(bd102$PLU, na.rm=TRUE)
##Tecnica 6. Correcciones por metodos estadisticos
boxplot(df3$Enero, horizontal=TRUE)
boxplot(df3$Febrero, horizontal=TRUE)
No Aplica