# Cargar librerías
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.3
## Warning: package 'tibble' was built under R version 4.3.3
## Warning: package 'tidyr' was built under R version 4.3.3
## Warning: package 'readr' was built under R version 4.3.3
## Warning: package 'purrr' was built under R version 4.3.3
## Warning: package 'dplyr' was built under R version 4.3.3
## Warning: package 'lubridate' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.2     ✔ tibble    3.2.1
## ✔ lubridate 1.9.4     ✔ tidyr     1.3.1
## ✔ purrr     1.0.4     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Importar la base de datos (asegúrate de tener el CSV en el mismo directorio)
denue_tam <- read_csv("denue_28.csv", locale = locale(encoding = "latin1"))
## Rows: 148560 Columns: 42
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (33): clee, nom_estab, raz_social, nombre_act, per_ocu, tipo_vial, nom_v...
## dbl  (9): id, codigo_act, numero_ext, numero_int, cod_postal, cve_ent, telef...
## 
## ℹ 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.
# === Parte 3. Limpieza y filtrado ===
# Aunque todo el dataset es de Tamaulipas (entidad 28), aplicamos el filtro como pide la rúbrica.
denue_tam_filtrado <- denue_tam %>%
  filter(entidad == "TAMAULIPAS" | entidad == "Tamaulipas") 

# === Parte 4. Generación de indicadores ===

# Indicador 1: Número de establecimientos por municipio
estab_por_municipio <- denue_tam_filtrado %>%
  group_by(municipio) %>%
  summarise(total_establecimientos = n()) %>%
  arrange(desc(total_establecimientos))

# Indicador 2: Distribución por tamaño de empresa (personal ocupado)
estab_por_tamano <- denue_tam_filtrado %>%
  group_by(per_ocu) %>%
  summarise(total_establecimientos = n()) %>%
  arrange(desc(total_establecimientos))

# === Parte 5. Visualización de datos con ggplot2 ===

# Gráfica 1: Establecimientos por municipio (Mostrando el Top 15 para mejor lectura)
estab_por_municipio %>%
  top_n(15, total_establecimientos) %>%
  ggplot(aes(x = reorder(municipio, total_establecimientos), y = total_establecimientos)) +
  geom_col(fill = "red") +
  coord_flip() +
  labs(title = "Top 15 Municipios con más Establecimientos en Tamaulipas",
       x = "Municipio",
       y = "Número de Establecimientos") +
  theme_minimal()

# Gráfica 2: Distribución por tamaño de empresa
estab_por_tamano %>%
  ggplot(aes(x = reorder(per_ocu, total_establecimientos), y = total_establecimientos)) +
  geom_col(fill = "green") +
  coord_flip() +
  labs(title = "Distribución de Establecimientos por Tamaño (Personal Ocupado)",
       x = "Rango de Personal Ocupado",
       y = "Número de Establecimientos") +
  theme_minimal()