library(readr)
beer2 <- read_csv("data/beer2.csv")
## Rows: 1586614 Columns: 15
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): marca, nacionalidad, nombre_cerveza, tipo, origen
## dbl (10): id, precio, alcohol, carbohidratos, calorias, calificacion, aroma,...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
library(DT)
# Cargar los datos
library(readr)
beer2 <- read_csv("data/beer2.csv")
## Rows: 1586614 Columns: 15
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (5): marca, nacionalidad, nombre_cerveza, tipo, origen
## dbl (10): id, precio, alcohol, carbohidratos, calorias, calificacion, aroma,...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Mostrar la tabla con DataTable
DT::datatable(
head(beer2),
fillContainer = FALSE,
options = list(pageLength = 8)
)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
# Tabla de frecuencias: tipo de cerveza
tabla_tipo <- beer2 %>%
count(tipo, name = "Frecuencia") %>%
mutate(`Frecuencia relativa` = round(Frecuencia / sum(Frecuencia), 4)) %>%
arrange(desc(Frecuencia))
tabla_tipo
## # A tibble: 5 × 3
## tipo Frecuencia `Frecuencia relativa`
## <chr> <int> <dbl>
## 1 cerveza normal y helada 839088 0.529
## 2 clara artesanal 483464 0.305
## 3 lager importada 219194 0.138
## 4 lager artesanal 22725 0.0143
## 5 baja en calorías / sin alcohol 22143 0.014
# Tabla de frecuencias: origen (nacional vs importada)
tabla_origen <- beer2 %>%
count(origen, name = "Frecuencia") %>%
mutate(`Frecuencia relativa` = round(Frecuencia / sum(Frecuencia), 4)) %>%
arrange(desc(Frecuencia))
tabla_origen
## # A tibble: 2 × 3
## origen Frecuencia `Frecuencia relativa`
## <chr> <int> <dbl>
## 1 importada 1412449 0.890
## 2 nacional 174165 0.110
# Tabla de frecuencias: nacionalidad
tabla_nacionalidad <- beer2 %>%
count(nacionalidad, name = "Frecuencia") %>%
mutate(`Frecuencia relativa` = round(Frecuencia / sum(Frecuencia), 4)) %>%
arrange(desc(Frecuencia))
tabla_nacionalidad
## # A tibble: 10 × 3
## nacionalidad Frecuencia `Frecuencia relativa`
## <chr> <int> <dbl>
## 1 Austria 201941 0.127
## 2 Bélgica 188677 0.119
## 3 Francia 181574 0.114
## 4 Estados Unidos 174165 0.110
## 5 Inglaterra 162644 0.102
## 6 Canadá 159508 0.100
## 7 Japón 155273 0.0979
## 8 Alemania 121684 0.0767
## 9 Irlanda 120742 0.0761
## 10 República Checa 120406 0.0759
# Tabla de frecuencias: calificación (variable ordinal)
tabla_calificacion <- beer2 %>%
count(calificacion, name = "Frecuencia") %>%
mutate(`Frecuencia relativa` = round(Frecuencia / sum(Frecuencia), 4)) %>%
arrange(calificacion)
tabla_calificacion
## # A tibble: 10 × 3
## calificacion Frecuencia `Frecuencia relativa`
## <dbl> <int> <dbl>
## 1 0 7 0
## 2 1 10954 0.0069
## 3 1.5 12975 0.0082
## 4 2 38225 0.0241
## 5 2.5 58523 0.0369
## 6 3 165644 0.104
## 7 3.5 301817 0.190
## 8 4 582764 0.367
## 9 4.5 324385 0.204
## 10 5 91320 0.0576
library(summarytools)
library(dplyr)
indicadores_cuantitativos <- beer2 %>%
select(precio, alcohol, carbohidratos, calorias) %>%
descr()
indicadores_cuantitativos
## Descriptive Statistics
## beer2
## N: 1586614
##
## alcohol calorias carbohidratos precio
## ----------------- ------------ ------------ --------------- ------------
## Mean 18.71 193.17 14.05 5.36
## Std.Dev 5.46 46.57 2.38 0.65
## Min 0.03 21.00 3.50 2.20
## Q1 14.28 157.00 12.40 4.98
## Median 17.67 182.00 13.80 5.41
## Q3 22.63 224.00 15.60 5.82
## Max 59.45 541.00 30.20 8.03
## MAD 5.56 43.00 2.37 0.62
## IQR 8.35 67.00 3.20 0.84
## CV 0.29 0.24 0.17 0.12
## Skewness 0.96 0.92 0.46 -0.47
## SE.Skewness 0.00 0.00 0.00 0.00
## Kurtosis 1.31 1.32 0.87 0.36
## N.Valid 1586614.00 1586614.00 1586614.00 1586614.00
## N 1586614.00 1586614.00 1586614.00 1586614.00
## Pct.Valid 100.00 100.00 100.00 100.00
library(dplyr)
# Comparación por tipo de cerveza
comparacion_tipo <- beer2 %>%
group_by(tipo) %>%
summarise(
precio_media = round(mean(precio), 2),
precio_mediana = round(median(precio), 2),
alcohol_media = round(mean(alcohol), 2),
alcohol_mediana = round(median(alcohol), 2),
carbohidratos_media = round(mean(carbohidratos), 2),
calorias_media = round(mean(calorias), 2),
calorias_mediana = round(median(calorias), 2)
)
comparacion_tipo
## # A tibble: 5 × 8
## tipo precio_media precio_mediana alcohol_media alcohol_mediana
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 baja en calorías / … 4.28 4.25 9.84 11.1
## 2 cerveza normal y he… 5.27 5.34 20.1 18.9
## 3 clara artesanal 5.7 5.78 18.2 17.4
## 4 lager artesanal 4.55 4.54 15.7 13.8
## 5 lager importada 5.17 5.24 15.9 14.3
## # ℹ 3 more variables: carbohidratos_media <dbl>, calorias_media <dbl>,
## # calorias_mediana <dbl>
# Comparación por origen (nacional vs importada)
comparacion_origen <- beer2 %>%
group_by(origen) %>%
summarise(
precio_media = round(mean(precio), 2),
precio_mediana = round(median(precio), 2),
alcohol_media = round(mean(alcohol), 2),
alcohol_mediana = round(median(alcohol), 2),
carbohidratos_media = round(mean(carbohidratos), 2),
calorias_media = round(mean(calorias), 2),
calorias_mediana = round(median(calorias), 2)
)
comparacion_origen
## # A tibble: 2 × 8
## origen precio_media precio_mediana alcohol_media alcohol_mediana
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 importada 5.46 5.5 18.7 17.4
## 2 nacional 4.54 4.54 18.7 17.9
## # ℹ 3 more variables: carbohidratos_media <dbl>, calorias_media <dbl>,
## # calorias_mediana <dbl>
tabla_tipo %>% slice_max(Frecuencia, n = 1)
## # A tibble: 1 × 3
## tipo Frecuencia `Frecuencia relativa`
## <chr> <int> <dbl>
## 1 cerveza normal y helada 839088 0.529
tabla_origen %>% slice_max(Frecuencia, n = 1)
## # A tibble: 1 × 3
## origen Frecuencia `Frecuencia relativa`
## <chr> <int> <dbl>
## 1 importada 1412449 0.890
tabla_nacionalidad %>% slice_max(Frecuencia, n = 1)
## # A tibble: 1 × 3
## nacionalidad Frecuencia `Frecuencia relativa`
## <chr> <int> <dbl>
## 1 Austria 201941 0.127
tabla_calificacion %>% slice_max(Frecuencia, n = 1)
## # A tibble: 1 × 3
## calificacion Frecuencia `Frecuencia relativa`
## <dbl> <int> <dbl>
## 1 4 582764 0.367
#Al comparar por tipo de cerveza, se observan diferencias notables: las cervezas clasificadas como “clara artesanal” presentan el precio promedio más alto ($5.70), seguidas de “cerveza normal y helada” ($5.27), mientras que las “bajas en calorías / sin alcohol” tienen el precio más bajo ($4.28). En cuanto al contenido de alcohol, como es de esperar, la categoría “baja en calorías / sin alcohol” presenta el valor más bajo (9.84 g), muy por debajo de las demás, mientras que las cervezas “normales y heladas” registran el mayor contenido de alcohol (20.10 g). Esto sugiere que el tipo de cerveza está más asociado con diferencias en el contenido de alcohol que en el precio, y que los tipos artesanales (clara y lager artesanal) se posicionan con precios distintos entre sí, lo que podría reflejar estrategias de mercado diferenciadas.