library(ggplot2)
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(tidyr)
library(DescTools)
library(readxl)
Datos_Arca_Continental_Original <- read_excel('/Users/angiezeron/Documents/R things/Datos Arca Continental Original.xlsx')
## Warning: Expecting numeric in N184066 / R184066C14: got a date
## Warning: Expecting numeric in O184066 / R184066C15: got a date
## Warning: Expecting numeric in P184066 / R184066C16: got a date
## Warning: Expecting numeric in Q184066 / R184066C17: got a date
## Warning: Expecting numeric in R184066 / R184066C18: got a date
## Warning: Expecting numeric in S184066 / R184066C19: got a date
## Warning: Expecting numeric in T184066 / R184066C20: got a date
## Warning: Expecting numeric in U184066 / R184066C21: got a date
## Warning: Expecting numeric in V184066 / R184066C22: got a date
## Warning: Expecting numeric in W184066 / R184066C23: got a date
## Warning: Expecting numeric in X184066 / R184066C24: got a date
## Warning: Expecting numeric in Y184066 / R184066C25: got a date
db = Datos_Arca_Continental_Original
db
## # A tibble: 466,509 × 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 
## # ℹ 466,499 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>

En este dataframe se puede identifdicar lo siguiente:

VECTORES: Numéricos () Las columnas ID, Año, y los meses (Enero a Diciembre) FACTORES: Categóricos (): Las columnas Territorio, Sub Territorio, CEDI, Cliente, Nombre, Tamaño Cte Industria, Segmento Det, Marca, Presentacion, Tamaño, y Retornable_NR. DATAFRAME: es la estructura de datos completa

#caracteristicas de cada columna
summary(db)
##        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
#para ver si tiene NAs

hay_nas <- any(is.na(db))
hay_nas
## [1] TRUE
#omitir los NAs

db_sin_nas <- na.omit(db)
db_sin_nas
## # A tibble: 51,076 × 25
##       ID   Año Territorio  `Sub Territorio` CEDI         Cliente Nombre
##    <dbl> <dbl> <chr>       <chr>            <chr>        <chr>   <chr> 
##  1     9  2016 Guadalajara Belenes          Suc. Belenes 77737   ABARR 
##  2    22  2016 Guadalajara Belenes          Suc. Belenes 77737   ABARR 
##  3    23  2016 Guadalajara Belenes          Suc. Belenes 77737   ABARR 
##  4    24  2016 Guadalajara Belenes          Suc. Belenes 77737   ABARR 
##  5    26  2016 Guadalajara Belenes          Suc. Belenes 77737   ABARR 
##  6    27  2016 Guadalajara Belenes          Suc. Belenes 77737   ABARR 
##  7    28  2016 Guadalajara Belenes          Suc. Belenes 77737   ABARR 
##  8    29  2016 Guadalajara Belenes          Suc. Belenes 77737   ABARR 
##  9    30  2016 Guadalajara Belenes          Suc. Belenes 77737   ABARR 
## 10    31  2016 Guadalajara Belenes          Suc. Belenes 77737   ABARR 
## # ℹ 51,066 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>
#Usando GEOMPOINT, haz un grafico que permita visualizar los datos atipicos y utiliza el concepto de media winzorizada o media recortada para evitar que sesguen lo svalores de los estadisticos descriptivos.

db_largo <- db %>%
  pivot_longer(cols = Enero:Diciembre, names_to = "Mes", values_to = "Ventas")

# Gráfico de outliers
ggplot(db_largo, aes(x = Mes, y = Ventas)) +
  geom_boxplot() + # Boxplot para ver los rangos y los outliers
  geom_point(aes(color = Mes), position = position_jitterdodge(), alpha = 0.5) +
  theme_minimal() +
  labs(title = "Visualización de Outliers por Mes", y = "Ventas", x = "Mes") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Mejorar la legibilidad de las etiquetas del eje x
## Warning: Removed 3148501 rows containing non-finite outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 3148501 rows containing missing values or values outside the scale
## range (`geom_point()`).

Los outliers se visualizan como los puntos que estan fuera de la aglomeración de cada mes.

db_largo <- db %>%
  pivot_longer(cols = Enero:Diciembre, names_to = "Mes", values_to = "Ventas")

media_winzorizada_por_mes <- db_largo %>%
  group_by(Mes) %>%
  # Aquí excluimos los NA antes de la winsorización y la media
  summarise(MediaWinzorizada = mean(Winsorize(Ventas, na.rm = TRUE), na.rm = TRUE))

# Crear el gráfico de boxplot y superponer la media winzorizada
ggplot(db_largo, aes(x = Mes, y = Ventas)) +
  geom_boxplot() + # Boxplot para ver los rangos y outliers
  geom_point(aes(color = Mes), position = position_jitter(width = 0.2), alpha = 0.5) +
  geom_point(data = media_winzorizada_por_mes, aes(x = Mes, y = MediaWinzorizada), color = 'black', size = 3) +
  theme_minimal() +
  labs(title = "Visualización de Outliers por Mes con Media Winzorizada",
       y = "Ventas",
       x = "Mes") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) 
## Warning: Removed 3148501 rows containing non-finite outside the scale range
## (`stat_boxplot()`).
## Warning: Removed 3148501 rows containing missing values or values outside the scale
## range (`geom_point()`).

?? nose porque me queda igual con la winzorizada

#usando SELECT, Muestra las ventas de Enero a Junio por Cedi.

ventas_seleccionadas <- db %>%
  select(CEDI, Enero:Junio)
ventas_seleccionadas
## # A tibble: 466,509 × 7
##    CEDI         Enero Febrero Marzo Abril  Mayo Junio
##    <chr>        <dbl>   <dbl> <dbl> <dbl> <dbl> <dbl>
##  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
##  7 Suc. Belenes     1      NA    NA    NA     0    NA
##  8 Suc. Belenes    NA       1    NA     1    NA     1
##  9 Suc. Belenes     3       3     4     4     4     4
## 10 Suc. Belenes    NA      NA    NA    NA    NA     0
## # ℹ 466,499 more rows
#usando FILTER, Muestra los movimientos por Cedi y tamaño de tienda grande.

ventas_filtradas <- db %>%
  filter(Tamaño == 'Familiar') %>%
  select(CEDI, Tamaño)
ventas_filtradas
## # A tibble: 137,995 × 2
##    CEDI         Tamaño  
##    <chr>        <chr>   
##  1 Suc. Belenes Familiar
##  2 Suc. Belenes Familiar
##  3 Suc. Belenes Familiar
##  4 Suc. Belenes Familiar
##  5 Suc. Belenes Familiar
##  6 Suc. Belenes Familiar
##  7 Suc. Belenes Familiar
##  8 Suc. Belenes Familiar
##  9 Suc. Belenes Familiar
## 10 Suc. Belenes Familiar
## # ℹ 137,985 more rows
#usando ARRANGE, Ordena la base de datos por Cedi, por marca y por presentación.

ventas_ordenadas <- db %>%
  arrange(CEDI, Marca, Presentacion)
ventas_ordenadas
## # A tibble: 466,509 × 25
##        ID   Año Territorio  `Sub Territorio` CEDI         Cliente Nombre
##     <dbl> <dbl> <chr>       <chr>            <chr>        <chr>   <chr> 
##  1 184065  2018 Territorio  Sub Territorio   CEDI         Cliente 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 
##  7 200783  2018 Guadalajara Belenes          Suc. Belenes 8201    MIGUE 
##  8 200968  2018 Guadalajara Belenes          Suc. Belenes 8678    FERNA 
##  9 201041  2018 Guadalajara Belenes          Suc. Belenes 8689    ABARR 
## 10 201313  2018 Guadalajara Belenes          Suc. Belenes 8795    ABARR 
## # ℹ 466,499 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>
#usando RENAME, Cambia el nombre del campo Sub Territorio por Sub_territorio

cambio_nombre <- db %>%
  rename(Sub_territorio = 'Sub Territorio')
cambio_nombre
## # A tibble: 466,509 × 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 
## # ℹ 466,499 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>
#Usando MUTATE, Agrega un campo calculado con las ventas del primer semestre y muestra las ventas del primer semestre por marca.

ventas_primer_semestre <- db %>%
  mutate(VentasPrimerSemestre = rowSums(select(., Enero, Febrero, Marzo, Abril, Mayo, Junio), na.rm = TRUE)) %>%
  group_by(Marca) %>%
  summarise(VentasPrimerSemestre = sum(VentasPrimerSemestre, na.rm = TRUE))

ventas_primer_semestre
## # A tibble: 56 × 2
##    Marca                VentasPrimerSemestre
##    <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
## # ℹ 46 more rows
#usando SUMMARISE, Obtén la media de las ventas del primer semestre agrupado por marca, presentación y tamaño.

ventas_resumidas <- db %>%
    mutate(VentasPrimerSemestre = rowSums(select(., Enero, Febrero, Marzo, Abril, Mayo, Junio), na.rm = TRUE)) %>%
  group_by(Marca, Presentacion, Tamaño) %>%
  summarise(MediaVentas = mean(VentasPrimerSemestre))
## `summarise()` has grouped output by 'Marca', 'Presentacion'. You can override
## using the `.groups` argument.
ventas_resumidas
## # A tibble: 274 × 4
## # Groups:   Marca, Presentacion [273]
##    Marca        Presentacion    Tamaño     MediaVentas
##    <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  
## # ℹ 264 more rows
#Calcular medidas de tendencia central (primer semestre)

tendencia_central <- db %>%
    mutate(VentasPrimerSemestre = rowSums(select(., Enero, Febrero, Marzo, Abril, Mayo, Junio), na.rm = TRUE)) %>%
  summarise(
    MediaVentasPrimerSemestre = mean(VentasPrimerSemestre),
    MedianaVentasPrimerSemestre = median(VentasPrimerSemestre)
    )

tendencia_central
## # A tibble: 1 × 2
##   MediaVentasPrimerSemestre MedianaVentasPrimerSemestre
##                       <dbl>                       <dbl>
## 1                      35.2                           4
#tendencia central de todo el año

ventas_totales_anuales <- db %>%
  mutate(VentasTotalesAnuales = rowSums(select(., Enero:Diciembre), na.rm = TRUE)) %>%
  summarise(
    MediaVentasAnuales = mean(VentasTotalesAnuales),
    MeidianaVentasAnuales = median(VentasTotalesAnuales)
  )

ventas_totales_anuales
## # A tibble: 1 × 2
##   MediaVentasAnuales MeidianaVentasAnuales
##                <dbl>                 <dbl>
## 1               62.8                     7

```