setwd("~/Practicas")
library(dplyr)
library(ggplot2)
library(knitr)
denue <- read.csv("denue_28_.csv", encoding = "latin1")
empresa_tipo <- denue %>%
select(nom_estab, municipio, per_ocu) %>%
mutate(tipo_empresa = case_when(
per_ocu == "0 a 5 personas" ~ "Microempresa",
per_ocu == "6 a 10 personas" ~ "Microempresa",
per_ocu == "11 a 30 personas" ~ "Pequeña empresa",
per_ocu == "31 a 50 personas" ~ "Pequeña empresa",
per_ocu == "51 a 100 personas" ~ "Mediana empresa",
per_ocu == "101 a 250 personas" ~ "Mediana empresa",
per_ocu == "251 y más personas" ~ "Grande empresa",
TRUE ~ "No especificado"
))
kable(head(empresa_tipo, 10), caption = "Muestra de Empresas Clasificadas")
Muestra de Empresas Clasificadas
| 7 ADELANTE AGRICULTORES |
Aldama |
0 a 5 personas |
Microempresa |
| ACUACAM |
Aldama |
0 a 5 personas |
Microempresa |
| ACUACULTIVO EL TORAL |
Aldama |
6 a 10 personas |
Microempresa |
| ACUACULTIVOS EL PORVENIR |
Abasolo |
0 a 5 personas |
Microempresa |
| ACUACULTIVOS FAZ MORA |
Abasolo |
6 a 10 personas |
Microempresa |
| ACUACULTIVOS LA JOLLA SP DE RL |
Soto la Marina |
0 a 5 personas |
Microempresa |
| ACUACULTIVOS SANTO TOMAS S.P.R. DE RL ACUAMEX |
Abasolo |
0 a 5 personas |
Microempresa |
| ACUACULTURA TECNIFICADA DE TAMAULIPAS |
Aldama |
11 a 30 personas |
Pequeña empresa |
| ACUICULTURA SIN NOMBRE |
Altamira |
0 a 5 personas |
Microempresa |
| AEROFUMIGACIONES TOVAR |
Valle Hermoso |
6 a 10 personas |
Microempresa |
total <- empresa_tipo %>% count(per_ocu)
kable(head(total, 10), caption = "Muestra de Empresas Clasificadas")
Muestra de Empresas Clasificadas
| 0 a 5 personas |
128839 |
| 101 a 250 personas |
689 |
| 11 a 30 personas |
6983 |
| 251 y más personas |
467 |
| 31 a 50 personas |
1304 |
| 51 a 100 personas |
867 |
| 6 a 10 personas |
9411 |
resumen_porcentual <- empresa_tipo %>%
count(per_ocu) %>%
mutate(porcentaje = round((n / sum(n)) * 100, 2)) %>%
arrange(desc(porcentaje))
kable(resumen_porcentual,
col.names = c("Rango de Personal", "Total Empresas", "Porcentaje (%)"),
caption = "Distribución Porcentual del Tamaño de Empresas")
Distribución Porcentual del Tamaño de Empresas
| 0 a 5 personas |
128839 |
86.73 |
| 6 a 10 personas |
9411 |
6.33 |
| 11 a 30 personas |
6983 |
4.70 |
| 31 a 50 personas |
1304 |
0.88 |
| 51 a 100 personas |
867 |
0.58 |
| 101 a 250 personas |
689 |
0.46 |
| 251 y más personas |
467 |
0.31 |
ggplot(resumen_porcentual, aes(x = reorder(per_ocu, -porcentaje), y = porcentaje, fill = per_ocu)) +
geom_bar(stat = "identity") +
geom_text(aes(label = paste0(porcentaje, "%")), vjust = -0.5, size = 3.5) +
labs(title = "Distribución de Empresas por Cantidad de Personal",
subtitle = "Estado de Tamaulipas",
x = "Rango de Personal",
y = "Porcentaje del Total (%)",
fill = "Rangos") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
guides(fill = "none")

municipio_actividad <- denue %>%
group_by(municipio) %>%
summarise(
total_establecimientos = n(),
actividades_distintas = n_distinct(codigo_act)
) %>%
arrange(desc(total_establecimientos))
municipio_top <- municipio_actividad %>% slice(1)
kable(head(municipio_actividad, 10),
col.names = c("Municipio", "Total de Unidades", "Diversidad de Actividades (Códigos)"),
caption = "Top 10 Municipios con Mayor Dinamismo Económico")
Top 10 Municipios con Mayor Dinamismo Económico
| Reynosa |
26156 |
580 |
| Matamoros |
24969 |
572 |
| Tampico |
15655 |
537 |
| Victoria |
15576 |
492 |
| Nuevo Laredo |
14962 |
525 |
| Altamira |
8889 |
448 |
| Ciudad Madero |
7167 |
410 |
| Río Bravo |
6454 |
354 |
| El Mante |
5623 |
355 |
| Valle Hermoso |
4174 |
317 |
conteo_actividades_vic <- denue %>%
filter(municipio == "Victoria") %>%
group_by(codigo_act, nombre_act) %>%
summarise(Total_Establecimientos = n(), .groups = 'drop') %>%
arrange(desc(Total_Establecimientos))
kable(head(conteo_actividades_vic, 15),
col.names = c("Clave (SCIAN)", "Nombre de la Actividad", "Total"),
caption = "Top 15 Actividades Económicas en Ciudad Victoria")
Top 15 Actividades Económicas en Ciudad Victoria
| 461110 |
Comercio al por menor en tiendas de abarrotes,
ultramarinos y misceláneas |
1593 |
| 812110 |
Salones y clínicas de belleza y peluquerías |
791 |
| 722513 |
Restaurantes con servicio de preparación de
antojitos |
549 |
| 813210 |
Asociaciones y organizaciones religiosas |
490 |
| 811111 |
Reparación mecánica en general de automóviles y
camiones |
456 |
| 722514 |
Restaurantes con servicio de preparación de tacos y
tortas |
405 |
| 465311 |
Comercio al por menor de artículos de papelería |
346 |
| 463211 |
Comercio al por menor de ropa, excepto de bebé y
lencería |
269 |
| 312112 |
Purificación y embotellado de agua |
259 |
| 522110 |
Banca múltiple |
240 |
| 461212 |
Comercio al por menor de cerveza |
239 |
| 722517 |
Restaurantes con servicio de preparación de pizzas,
hamburguesas, hot dogs y pollos rostizados para llevar |
224 |
| 332320 |
Fabricación de productos de herrería |
223 |
| 621211 |
Consultorios dentales del sector privado |
215 |
| 722511 |
Restaurantes con servicio de preparación de alimentos a
la carta o de comida corrida |
196 |
top_15_vic <- denue %>%
filter(municipio == "Victoria") %>%
group_by(codigo_act, nombre_act) %>%
summarise(Total = n(), .groups = 'drop') %>%
arrange(desc(Total)) %>%
head(15)
ggplot(top_15_vic, aes(x = reorder(nombre_act, Total), y = Total, fill = Total)) +
geom_bar(stat = "identity", show.legend = FALSE) +
coord_flip() +
# Ajustamos 'hjust' para separar el número de la barra y 'size' para legibilidad
geom_text(aes(label = Total),
hjust = -0.3,
size = 3.2,
fontface = "bold") +
# Importante: expand_limits da espacio al final para que el número no se salga del cuadro
expand_limits(y = max(top_15_vic$Total) * 1.15) +
scale_fill_gradient(low = "#D6EAF8", high = "#2E86C1") +
labs(title = "Principales Actividades Económicas en Cd. Victoria",
x = NULL,
y = "Cantidad de Establecimientos") +
theme_minimal() +
theme(axis.text.y = element_text(size = 6.5))
