Contexto

Para Arca Continental su principal canal de distribución es el canal tradicional, es decir, las tienditas de la esquina. Esto permite que la familia de productos de la compañía Coca Cola estén siempre cerca de sus consumidores a través de estas pequeñas empresas familiares que forman parte de su propia comunidad.

Sin embargo, este tipo de formato de Retail está enfrentando una fuerte competencia por parte de los canales modernos. En un principio fueron las tiendas de conveniencia como Oxxo y 7-Eleven quienes comenzaron a crear una importante cantidad de nuevos establecimientos, cada vez más en zonas habitacionales y no solo en avenidas o gasolineras.

Importar la base de datos

bd <- read.csv("/Users/marcogonzalez/Desktop/Programacion Bootcamp/Datos Arca Continental Original.csv")

Entender la base de datos

summary(bd)
##        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(bd)
## '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" ...
# Convertir tipo de variables
bd$Cliente <- as.integer(bd$Cliente)
## Warning: NAs introduced by coercion
bd$Enero <- as.integer(bd$Enero)
## Warning: NAs introduced by coercion
bd$Febrero <- as.integer(bd$Febrero)
## Warning: NAs introduced by coercion
bd$Marzo <- as.integer(bd$Marzo)
## Warning: NAs introduced by coercion
bd$Abril <- as.integer(bd$Abril)
## Warning: NAs introduced by coercion
bd$Mayo <- as.integer(bd$Mayo)
## Warning: NAs introduced by coercion
bd$Junio <- as.integer(bd$Junio)
## Warning: NAs introduced by coercion
bd$Julio <- as.integer(bd$Julio)
## Warning: NAs introduced by coercion
bd$Agosto <- as.integer(bd$Agosto)
## Warning: NAs introduced by coercion
bd$Septiembre <- as.integer(bd$Septiembre)
## Warning: NAs introduced by coercion
bd$Octubre <- as.integer(bd$Octubre)
## Warning: NAs introduced by coercion
bd$Noviembre <- as.integer(bd$Noviembre)
## Warning: NAs introduced by coercion
bd$Diciembre <- as.integer(bd$Diciembre)
## Warning: NAs introduced by coercion
# ¿Cuantos NA´s en la base de datos?
sum(is.na(bd))
## [1] 3149804
# ¿Cuantos NA´s hay por variable?
sapply(bd,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

Limpiar base de datos

boxplot(bd$Enero)

boxplot(bd$Diciembre)

mean(bd$Enero, na.rm = TRUE)
## [1] 9.391922
mean(bd$Enero, trim = 10/100, na.rm = TRUE)
## [1] 3.677421
plot(bd$ID, bd$Enero, main="Ventas")

Funciones

#library(dplyr)
# Muestra las ventas de Enero a Junio Por Cedi
#bdl <- select(bd,CEDI, Enero:Junio)
#head(bd1)
# Muestra los movimientos por Cedi y tamaño de tienda grande.
#bd2 <- filter(bd, Tamaño.Cte.Industria=="Grande")
#head(bd2)
# Ordena la base de datos por Cedi, por marca y por presentación.
#bd3 <- arrange(bd,CEDI)
#head(bd3)
#bd4 <- arrange(bd, Marca)
#head(bd4)
#bd5 <- arrange(bd, Presentacion)
#head(bd5)
# Cambia el nombre del campo Sub Territorio por Sub_territorio
#bd6 <-  rename(bd, Sub_territorio = Sub.Territorio)
#head(bd6)
# Agrega un campo calculado con las ventas del primer semestre y muestra las ventas del primer semestre por marca.
#bd7 <- bd
#bd7$VentasSemestreUno <- sum(bd$Enero, bd$Febrero, bd$Marzo, bd$Abril, bd$Mayo, bd$Junio, na.rm = TRUE)
#head(bd7)

# Obtén la media de las ventas del primer semestre agrupado por marca, presentación y tamaño.
#summary(bd7)

Conclusion

En este ejercicio detectamos que la base de datos está bien construida, no tiene valores faltantes más que en los meses donde no hay ventas. Detectamos un renglón con valores de ventas con formato fecha que deberemos eliminar más adelantê. se realizaron algunas conversiones de tipos de dato de caracter (texto) a números enteros. Se practicaron algunas funciones de manejo básico de tablas.

LS0tCnRpdGxlOiAiQWN0aXZpZGFkIEluZGl2aWR1YWwgMiIKYXV0aG9yOiAiTWFyY29fR29uemFsZXpfQTAwODM0ODk1IgpkYXRlOiAiMjAyMy0wMy0yMSIKb3V0cHV0OiAKICBodG1sX2RvY3VtZW50OgogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6IHRydWUKICAgIGNvZGVfZG93bmxvYWQ6IHRydWUKLS0tCiFbXSgvVXNlcnMvbWFyY29nb256YWxlei9EZXNrdG9wL1Byb2dyYW1hY2lvbiBCb290Y2FtcC9hcmNhLmpwZWcpCgojIyBDb250ZXh0bwpQYXJhIEFyY2EgQ29udGluZW50YWwgc3UgcHJpbmNpcGFsIGNhbmFsIGRlIGRpc3RyaWJ1Y2nDs24gZXMgZWwgY2FuYWwgdHJhZGljaW9uYWwsIGVzIGRlY2lyLCBsYXMgdGllbmRpdGFzIGRlIGxhIGVzcXVpbmEuIEVzdG8gcGVybWl0ZSBxdWUgbGEgZmFtaWxpYSBkZSBwcm9kdWN0b3MgZGUgbGEgY29tcGHDscOtYSBDb2NhIENvbGEgZXN0w6luIHNpZW1wcmUgY2VyY2EgZGUgc3VzIGNvbnN1bWlkb3JlcyBhIHRyYXbDqXMgZGUgZXN0YXMgcGVxdWXDsWFzIGVtcHJlc2FzIGZhbWlsaWFyZXMgcXVlIGZvcm1hbiBwYXJ0ZSBkZSBzdSBwcm9waWEgY29tdW5pZGFkLgoKU2luIGVtYmFyZ28sIGVzdGUgdGlwbyBkZSBmb3JtYXRvIGRlIFJldGFpbCBlc3TDoSBlbmZyZW50YW5kbyB1bmEgZnVlcnRlIGNvbXBldGVuY2lhIHBvciBwYXJ0ZSBkZSBsb3MgY2FuYWxlcyBtb2Rlcm5vcy4gRW4gdW4gcHJpbmNpcGlvIGZ1ZXJvbiBsYXMgdGllbmRhcyBkZSBjb252ZW5pZW5jaWEgY29tbyBPeHhvIHkgNy1FbGV2ZW4gcXVpZW5lcyBjb21lbnphcm9uIGEgY3JlYXIgdW5hIGltcG9ydGFudGUgY2FudGlkYWQgZGUgbnVldm9zIGVzdGFibGVjaW1pZW50b3MsIGNhZGEgdmV6IG3DoXMgZW4gem9uYXMgaGFiaXRhY2lvbmFsZXMgeSBubyBzb2xvIGVuIGF2ZW5pZGFzIG8gZ2Fzb2xpbmVyYXMuCgojIyMgSW1wb3J0YXIgbGEgYmFzZSBkZSBkYXRvcwpgYGB7cn0KYmQgPC0gcmVhZC5jc3YoIi9Vc2Vycy9tYXJjb2dvbnphbGV6L0Rlc2t0b3AvUHJvZ3JhbWFjaW9uIEJvb3RjYW1wL0RhdG9zIEFyY2EgQ29udGluZW50YWwgT3JpZ2luYWwuY3N2IikKYGBgCgojIyMgRW50ZW5kZXIgbGEgYmFzZSBkZSBkYXRvcwpgYGB7cn0Kc3VtbWFyeShiZCkKc3RyKGJkKQojIENvbnZlcnRpciB0aXBvIGRlIHZhcmlhYmxlcwpiZCRDbGllbnRlIDwtIGFzLmludGVnZXIoYmQkQ2xpZW50ZSkKYmQkRW5lcm8gPC0gYXMuaW50ZWdlcihiZCRFbmVybykKYmQkRmVicmVybyA8LSBhcy5pbnRlZ2VyKGJkJEZlYnJlcm8pCmJkJE1hcnpvIDwtIGFzLmludGVnZXIoYmQkTWFyem8pCmJkJEFicmlsIDwtIGFzLmludGVnZXIoYmQkQWJyaWwpCmJkJE1heW8gPC0gYXMuaW50ZWdlcihiZCRNYXlvKQpiZCRKdW5pbyA8LSBhcy5pbnRlZ2VyKGJkJEp1bmlvKQpiZCRKdWxpbyA8LSBhcy5pbnRlZ2VyKGJkJEp1bGlvKQpiZCRBZ29zdG8gPC0gYXMuaW50ZWdlcihiZCRBZ29zdG8pCmJkJFNlcHRpZW1icmUgPC0gYXMuaW50ZWdlcihiZCRTZXB0aWVtYnJlKQpiZCRPY3R1YnJlIDwtIGFzLmludGVnZXIoYmQkT2N0dWJyZSkKYmQkTm92aWVtYnJlIDwtIGFzLmludGVnZXIoYmQkTm92aWVtYnJlKQpiZCREaWNpZW1icmUgPC0gYXMuaW50ZWdlcihiZCREaWNpZW1icmUpCiMgwr9DdWFudG9zIE5BwrRzIGVuIGxhIGJhc2UgZGUgZGF0b3M/CnN1bShpcy5uYShiZCkpCiMgwr9DdWFudG9zIE5BwrRzIGhheSBwb3IgdmFyaWFibGU/CnNhcHBseShiZCxmdW5jdGlvbih4KSBzdW0oaXMubmEoeCkpKQpgYGAKCiMjIyBMaW1waWFyIGJhc2UgZGUgZGF0b3MKYGBge3J9CmJveHBsb3QoYmQkRW5lcm8pCmJveHBsb3QoYmQkRGljaWVtYnJlKQptZWFuKGJkJEVuZXJvLCBuYS5ybSA9IFRSVUUpCm1lYW4oYmQkRW5lcm8sIHRyaW0gPSAxMC8xMDAsIG5hLnJtID0gVFJVRSkKcGxvdChiZCRJRCwgYmQkRW5lcm8sIG1haW49IlZlbnRhcyIpCmBgYAoKIyMjIEZ1bmNpb25lcwpgYGB7cn0KI2xpYnJhcnkoZHBseXIpCiMgTXVlc3RyYSBsYXMgdmVudGFzIGRlIEVuZXJvIGEgSnVuaW8gUG9yIENlZGkKI2JkbCA8LSBzZWxlY3QoYmQsQ0VESSwgRW5lcm86SnVuaW8pCiNoZWFkKGJkMSkKIyBNdWVzdHJhIGxvcyBtb3ZpbWllbnRvcyBwb3IgQ2VkaSB5IHRhbWHDsW8gZGUgdGllbmRhIGdyYW5kZS4KI2JkMiA8LSBmaWx0ZXIoYmQsIFRhbWHDsW8uQ3RlLkluZHVzdHJpYT09IkdyYW5kZSIpCiNoZWFkKGJkMikKIyBPcmRlbmEgbGEgYmFzZSBkZSBkYXRvcyBwb3IgQ2VkaSwgcG9yIG1hcmNhIHkgcG9yIHByZXNlbnRhY2nDs24uCiNiZDMgPC0gYXJyYW5nZShiZCxDRURJKQojaGVhZChiZDMpCiNiZDQgPC0gYXJyYW5nZShiZCwgTWFyY2EpCiNoZWFkKGJkNCkKI2JkNSA8LSBhcnJhbmdlKGJkLCBQcmVzZW50YWNpb24pCiNoZWFkKGJkNSkKIyBDYW1iaWEgZWwgbm9tYnJlIGRlbCBjYW1wbyBTdWIgVGVycml0b3JpbyBwb3IgU3ViX3RlcnJpdG9yaW8KI2JkNiA8LSAgcmVuYW1lKGJkLCBTdWJfdGVycml0b3JpbyA9IFN1Yi5UZXJyaXRvcmlvKQojaGVhZChiZDYpCiMgQWdyZWdhIHVuIGNhbXBvIGNhbGN1bGFkbyBjb24gbGFzIHZlbnRhcyBkZWwgcHJpbWVyIHNlbWVzdHJlIHkgbXVlc3RyYSBsYXMgdmVudGFzIGRlbCBwcmltZXIgc2VtZXN0cmUgcG9yIG1hcmNhLgojYmQ3IDwtIGJkCiNiZDckVmVudGFzU2VtZXN0cmVVbm8gPC0gc3VtKGJkJEVuZXJvLCBiZCRGZWJyZXJvLCBiZCRNYXJ6bywgYmQkQWJyaWwsIGJkJE1heW8sIGJkJEp1bmlvLCBuYS5ybSA9IFRSVUUpCiNoZWFkKGJkNykKCiMgT2J0w6luIGxhIG1lZGlhIGRlIGxhcyB2ZW50YXMgZGVsIHByaW1lciBzZW1lc3RyZSBhZ3J1cGFkbyBwb3IgbWFyY2EsIHByZXNlbnRhY2nDs24geSB0YW1hw7FvLgojc3VtbWFyeShiZDcpCgpgYGAKCiMjIENvbmNsdXNpb24KRW4gZXN0ZSBlamVyY2ljaW8gZGV0ZWN0YW1vcyBxdWUgbGEgYmFzZSBkZSBkYXRvcyBlc3TDoSBiaWVuIGNvbnN0cnVpZGEsIG5vIHRpZW5lIHZhbG9yZXMgZmFsdGFudGVzIG3DoXMgcXVlIGVuIGxvcyBtZXNlcyBkb25kZSBubyBoYXkgdmVudGFzLiBEZXRlY3RhbW9zIHVuIHJlbmdsw7NuIGNvbiB2YWxvcmVzIGRlIHZlbnRhcyBjb24gZm9ybWF0byBmZWNoYSBxdWUgZGViZXJlbW9zIGVsaW1pbmFyIG3DoXMgYWRlbGFudMOqLiBzZSByZWFsaXphcm9uIGFsZ3VuYXMgY29udmVyc2lvbmVzIGRlIHRpcG9zIGRlIGRhdG8gZGUgY2FyYWN0ZXIgKHRleHRvKSBhIG7Dum1lcm9zIGVudGVyb3MuIFNlIHByYWN0aWNhcm9uIGFsZ3VuYXMgZnVuY2lvbmVzIGRlIG1hbmVqbyBiw6FzaWNvIGRlIHRhYmxhcy4KCgo=