¿Está desarmando Noboa al crimen organizado? Una lectura de los decomisos

Entre enero y agosto de 2026, los registros policiales de armas decomisadas aumentaron un 17,1% respecto del mismo período de 2023, antes de la declaración de conflicto armado interno, y un 13,5% respecto de 2025. En ambas comparaciones, Guayas y Los Ríos aportaron cerca de nueve de cada diez registros adicionales. Nueve gráficos ayudan a entender qué nos dice este aumento y qué no.

El presidente Daniel Noboa le declaró la guerra al crimen organizado en enero de 2024. El día 9, mediante el Decreto Ejecutivo 111, reconoció un conflicto armado interno. ¿Cómo saber si esa política está funcionando? Ninguna cifra lo responde por sí sola, pero hay un punto de partida: las armas que decomisa la Policía.

Las armas sostienen el poder criminal. Con ellas se mata, se amenaza, se cobran extorsiones (las llamadas «vacunas») y se disputa el control de barrios. Por eso, observar qué armas se decomisan, dónde y cómo cambia su número permite observar una parte del trabajo policial sobre esos instrumentos de violencia.

Para hacerlo, analicé 56.705 registros de armas decomisadas por la Policía Nacional entre enero de 2021 y agosto de 2026. Los datos provienen del Ministerio del Interior y están publicados, para quien quiera revisarlos, en el conjunto Armas Ilícitas del Portal de Datos Abiertos del Ecuador.

A lo largo del texto hablo de «registros» de armas, que son las entradas de esa base de datos. Un registro no equivale a un operativo policial.

Decomisar armas es un resultado operativo; reducir la capacidad criminal o la violencia sería un efecto sobre la seguridad. Estas cifras muestran lo primero, pero no bastan para establecer lo segundo.

Pensemos en las multas de tránsito. Si un año se ponen más multas, puede ser porque hubo más controles o radares, más conductores imprudentes o, simplemente, un mejor registro de las infracciones.

Con los decomisos de armas ocurre algo parecido. Un aumento puede reflejar más actividad policial, más armas en circulación o cambios en la cobertura y la calidad del registro. Las cifras, por sí mismas, no dicen cuál de esas explicaciones pesa más.

Dos referencias: antes de la declaración y el último año

Comparo 2026 con 2023 para observar el cambio respecto de una referencia anterior a la declaración de enero de 2024, y con 2025 para examinar la evolución reciente.

Uso exclusivamente enero–agosto, porque los datos de 2026 llegan hasta agosto. Cada comparación abarca los mismos ocho meses. Aquí, «largo plazo» designa la comparación de tres años, 2023–2026; «corto plazo», la de un año, 2025–2026. Los porcentajes expresan variaciones totales entre esos períodos, no tasas anuales de crecimiento.

Elegir 2023 permite comparar el nivel actual con el anterior a la declaración, pero no medir su efecto. Para eso necesitaríamos estimar cuánto habrían cambiado los decomisos en ausencia de la declaratoria de conflicto armado interno.

Un 17,1% más que en 2023 y un 13,5% más que en 2025

Entre enero y agosto de 2023 se registraron 7.077 armas decomisadas. En el mismo tramo de 2025 fueron 7.306, y en 2026, 8.290: el valor más alto de la serie para esos ocho meses.

La comparación de largo plazo arroja 1.213 registros adicionales, un 17,1% más que en 2023. La de corto plazo muestra 984 adicionales, un 13,5% más que en 2025.

Entre 2023 y 2025, el aumento fue de apenas 229 registros, un 3,2%, con niveles parecidos en 2024 y 2025. De la diferencia de 1.213 registros entre 2023 y 2026, el 81,1% corresponde al salto del último año. Buena parte de la distancia con el nivel anterior a la declaración se abre recientemente.

El volumen creció, pero eso no demuestra mayor eficiencia. Para relacionar resultados y recursos necesitaríamos conocer cuántos operativos, agentes, horas de trabajo y fondos hicieron falta para obtenerlos.

Más de seis de cada diez registros son armas cortas

En el período completo, enero de 2021–agosto de 2026, las pistolas, revólveres y otras armas cortas reúnen el 63,4% del total. Les siguen las escopetas, con el 13,2%, y los fusiles, rifles y carabinas, con el 8,9%. Los demás tipos identificados suman el 2,2%.

Quedan 6.998 registros (el 12,3%) cuyo tipo no está especificado o requiere verificación. Los conservé aparte porque repartirlos entre las categorías conocidas exigiría suponer una distribución que no podemos comprobar.

Si las clasificaciones actuales son correctas y una revisión solo asignara los registros dudosos a categorías conocidas, sin cambiar el total, los porcentajes identificados funcionarían como mínimos. Bajo esas condiciones, las armas cortas no bajarían del 63,4%.

Frente a 2023: las escopetas se duplican y los fusiles, rifles y carabinas crecen un 56%

La comparación de largo plazo muestra que el aumento no se reparte de manera uniforme entre los tipos de arma.

Las escopetas pasan de 718 a 1.484 registros: 766 más, un 106,7%. Los fusiles, rifles y carabinas pasan de 575 a 897: 322 más, un 56%. Entre ambas categorías suman 1.088 de los 1.213 registros adicionales: el 89,7% del incremento neto nacional.

Las armas cortas, aunque siguen siendo mucho más numerosas, crecen bastante menos: de 4.698 a 4.960, un 5,6%. Las ametralladoras y subametralladoras, en cambio, bajan de 162 a 148, un 8,6%.

El crecimiento, por tanto, no abarca todas las categorías: frente a 2023, se concentra sobre todo en escopetas y en fusiles, rifles y carabinas.

Frente a 2025: las escopetas crecen más en porcentaje; las armas cortas, en cantidad

Al comparar enero–agosto de 2026 con el mismo período de 2025 aparece un matiz. Las escopetas suben de 1.074 a 1.484: 410 registros más, un 38,2%. Las armas cortas pasan de 4.485 a 4.960: 475 más, un 10,6%.

Las escopetas crecen más en proporción; las armas cortas aportan más unidades porque partían de una base unas cuatro veces mayor. Juntas suman 885 de los 984 registros adicionales, el 89,9% del incremento neto.

Los fusiles, rifles y carabinas aumentan un 16,2%; las ametralladoras y subametralladoras caen un 11,4% y quedan por debajo de ambos años de referencia. Las armas cortas muestran por qué importan las dos comparaciones: crecen un 10,6% frente a 2025, pero solo un 5,6% frente a 2023, porque en 2025 su registro era menor.

Los registros sin tipo definido o por verificar pasan de 919 en 2023 a 806 en 2025 y 799 en 2026. Su participación baja del 13,0% al 11,0% y luego al 9,6%, siempre en enero–agosto. Es compatible con una clasificación más precisa, pero no la demuestra: también puede cambiar lo decomisado. Para distinguir ambos factores habría que revisar los criterios y los registros individuales.

Cinco provincias de la Costa concentran casi siete de cada diez registros

En el acumulado de enero de 2021 a agosto de 2026, Guayas reúne el 33,3% de todos los registros del país. Al sumar Los Ríos, Manabí, Esmeraldas y El Oro, estas cinco provincias de la Costa concentran el 69,8%.

Son cantidades absolutas, sin ajuste por población ni esfuerzo policial. Una tasa por cada 100.000 habitantes permitiría comparar decomisos respecto del tamaño de la población, pero seguiría reflejando tanto la circulación de armas como la actividad institucional, sin medir por sí sola el arsenal ilegal.

Frente a 2023: Los Ríos duplica sus registros y, con Guayas, aporta el 91% del incremento

En la comparación de largo plazo, Los Ríos pasa de 597 a 1.212 registros: 615 más, un 103%. Guayas pasa de 2.408 a 2.897: 489 más, un 20,3%.

Ambas aportan 1.104 de los 1.213 registros adicionales del país: el 91% del incremento neto. Los Ríos suma más registros nuevos y crece más en proporción, aunque Guayas conserva el mayor volumen de las provincias mostradas.

Manabí aumenta un 24,3% y El Oro un 35%. Esmeraldas prácticamente no cambia: de 547 a 544 registros, un 0,5% menos. El resto del país (las otras 19 provincias y el mar territorial) registra un descenso conjunto del 8,5%, lo que no implica que todos esos territorios hayan caído.

«Neto» significa el saldo de sumar aumentos y restar caídas. El 91% expresa la contribución de Guayas y Los Ríos a ese saldo, no su participación en todos los decomisos de 2026.

Frente a 2025: Guayas y Los Ríos vuelven a concentrar el aumento

La comparación reciente confirma esa concentración territorial. Guayas aporta 458 de los registros adicionales y Los Ríos, 416. Entre ambas suman 874 de los 984: el 88,8% del incremento neto.

Los Ríos crece un 52,3% frente a su propia cifra de 2025; Guayas, un 18,8%. Manabí aumenta un 16,7% y Esmeraldas permanece prácticamente igual.

El Oro ilustra el doble enfoque: sus 606 registros de 2026 están un 35% por encima de los 449 de 2023, pero un 4,7% por debajo de los 636 de 2025. La caída reciente y el aumento de largo plazo son compatibles; una sola referencia ocultaría parte de la trayectoria.

Sucumbíos: casi la mitad son fusiles, rifles y carabinas

Este gráfico vuelve a la composición acumulada del período completo. En Sucumbíos, 824 de sus 1.820 registros son fusiles, rifles y carabinas: el 45,3%. En el conjunto nacional, esa categoría representa el 8,9%.

El denominador cambia la pregunta. El 45,3% indica qué parte de lo decomisado en Sucumbíos pertenece a esa categoría. Si preguntáramos qué parte del total nacional de fusiles, rifles y carabinas se encontró allí, sería el 16,3%: 824 de 5.069.

Las provincias se seleccionan por la proporción de esta categoría dentro de sus registros, no por la cantidad. La agrupación tampoco distingue suficientemente las características técnicas de las armas: no permite determinar cuántas son de uso militar ni llamar «armas de guerra» al conjunto.

Mes a mes: el aumento reciente y la trayectoria anterior a 2024

El histórico mensual muestra el recorrido entre las comparaciones: las subidas, las caídas y el peso de los meses excepcionales.

La línea gris muestra cada mes. La azul promedia ese mes y los once anteriores. El punto de agosto de 2026, por ejemplo, abarca septiembre de 2025–agosto de 2026. Con cada paso entra un mes nuevo y sale el más antiguo.

La media móvil suaviza las fluctuaciones, pero no sustituye un ajuste estacional formal. Además, cualquier mes excepcional permanece doce puntos dentro del promedio: por eso hay que leer ambas líneas juntas.

El promedio pasa de unos 649 registros mensuales durante 2021 a 980 en los últimos doce meses disponibles: cerca de un 51% más. La marca de enero de 2024 ubica la declaración y permite ver que el crecimiento ya era visible antes, con cambios de ritmo y retrocesos después.

En siete de los ocho meses de 2026 hubo más registros que en el mismo mes de 2023; la excepción fue abril: de 1.072 a 1.016. Frente a 2025 también aumentaron siete meses, pero la excepción fue junio: de 930 a 843.

El mayor total de 2026, por tanto, no depende de un único mes excepcional respecto de ninguno de los años de referencia, aunque sus aportes sean distintos.

Qué aprendemos de las dos comparaciones

En enero–agosto de 2026 se registraron un 17,1% más decomisos que en 2023 y un 13,5% más que en 2025. Buena parte de la diferencia con 2023 se abre en el último año y se distribuye entre varios meses.

Guayas y Los Ríos aportan el 91% del incremento neto frente a 2023 y el 88,8% frente a 2025. Por tipo, escopetas y fusiles, rifles y carabinas reúnen el 89,7% del incremento de largo plazo; armas cortas y escopetas, el 89,9% del reciente.

Estos resultados no bastan para concluir que las organizaciones criminales disponen de menos armas ni para atribuir los cambios a una política. Evaluar la estrategia de Noboa exige averiguar cómo llegan las armas a manos criminales, con qué facilidad se reponen y si los decomisos reducen su capacidad de ejercer violencia.

Una pregunta abierta: ¿más presión, más violencia?

¿Podría el aumento de los decomisos reflejar una confrontación más intensa entre el Estado y las organizaciones criminales? ¿Y podría esa presión contribuir a una escalada de homicidios? Esta serie no incorpora homicidios ni esfuerzo operativo, por lo que no permite comprobarlo.

La captura de un cabecilla (como alias «Fito», líder de Los Choneros, o «Lobo Menor», líder de Los Lobos, entre muchos otros en años recientes) puede debilitar la coordinación de una banda, abrir disputas de sucesión y ofrecer incentivos a sus rivales para disputar territorio y control. Una investigación de Calderón, Robles, Díaz-Cayeros y Magaloni (2015) sobre México encontró que la captura o muerte de líderes podía agravar tanto la violencia vinculada a esas organizaciones como los homicidios que afectan al resto de la población. Ese antecedente sugiere una hipótesis para Ecuador, pero comprobarla exige evidencia propia.

La relación podría funcionar al revés: más violencia provoca más operativos y, con ellos, más decomisos. O una mayor circulación de armas puede impulsar ambos fenómenos. Que las dos cifras suban no permite elegir entre estas explicaciones, que incluso pueden coexistir.

Para distinguirlas habría que medir cuándo y dónde aumentó la presión estatal: el despliegue efectivo asociado a los toques de queda, las capturas de cabecillas y la evolución posterior de los homicidios. Habría que contrastarla con las tendencias previas y con territorios comparables, considerando posibles desplazamientos de la violencia. Las circunstancias de las muertes (disputas entre bandas, represalias o enfrentamientos con las fuerzas del orden) aportarían más evidencia.

Incluso si la confrontación explicara parte de la violencia, quedaría la pregunta de fondo: si el Estado logra convertir los resultados operativos en una reducción permanente del poder criminal y en más seguridad para la ciudadanía.

 

Replicación: Comandos en R

1. Descargar las bases de datos del Ministerio del Interior correspondientes a Armas Ilícitas: Link.

2. Correr el siguiente código en R, haciendo los cambios necesarios en la ubicación del directorio. Este código genera los datos necesarios para el análisis.

library(readxl)
library(dplyr)
library(lubridate)
library(tidyr)

ruta «C:/»
archivo_2026 file.path(ruta, «mdi_armasilicitas_pm_2026_enero_agosto.xlsx»)
archivo_hist file.path(ruta, «mdi_armasilicitas_pm_historico_2017_2025.xlsx»)

parsear_fecha function(x) {
if (inherits(x, c(«POSIXct», «POSIXt», «Date»))) return(as.Date(x))
if (is.numeric(x)) return(as.Date(x, origin = «1899-12-30»))
x_chr trimws(as.character(x))
out suppressWarnings(as.Date(x_chr, format = «%Y/%m/%d»))
idx is.na(out); if (any(idx)) out[idx] suppressWarnings(as.Date(x_chr[idx], format = «%Y-%m-%d»))
idx is.na(out); if (any(idx)) out[idx] suppressWarnings(as.Date(x_chr[idx], format = «%d/%m/%Y»))
idx is.na(out); if (any(idx)) out[idx] suppressWarnings(as.Date(x_chr[idx], format = «%m/%d/%Y»))
idx is.na(out); if (any(idx)) out[idx] suppressWarnings(as.Date(x_chr[idx], format = «%Y/%m/%d %H:%M:%S»))
out
}

df_2026 read_excel(archivo_2026)
df_hist read_excel(archivo_hist)
names(df_2026) trimws(names(df_2026))
names(df_hist) trimws(names(df_hist))

df bind_rows(df_2026, df_hist) %>%
mutate(
fecha_evento = parsear_fecha(fecha_evento),
nombre_objeto = toupper(trimws(as.character(nombre_objeto))),
nombre_provincia = toupper(trimws(as.character(nombre_provincia)))
)

df df %>%
mutate(
categoria_arma = case_when(
nombre_objeto %in% c(«PISTOLA», «REVOLVER», «OTROS ARMAS CORTAS») ~ «Armas cortas»,
nombre_objeto %in% c(«FUSIL», «RIFLE», «CARABINA») ~ «Fusiles, rifles y carabinas»,
nombre_objeto %in% c(«ESCOPETA») ~ «Escopetas»,
nombre_objeto %in% c(«AMETRALLADORA», «SUBAMETRALLADORA») ~ «Ametralladoras y subametralladoras»,
nombre_objeto %in% c(«LANZA GRANADA», «MORTERO», «CAÑÓN») ~ «Lanzagranadas, morteros y cañones»,
nombre_objeto %in% c(«CARABINAS LANZA GASES») ~ «Lanzadores de gases»,
TRUE ~ «Tipo no especificado o por verificar»
)
)

df_fil df %>%
filter(
!is.na(fecha_evento),
fecha_evento >= as.Date(«2021-01-01»),
fecha_evento as.Date(«2026-08-31»)
)

categorias c(
«Armas cortas»,
«Fusiles, rifles y carabinas»,
«Escopetas»,
«Ametralladoras y subametralladoras»,
«Lanzagranadas, morteros y cañones»,
«Lanzadores de gases»,
«Tipo no especificado o por verificar»
)

mensual_cat df_fil %>%
mutate(anio = year(fecha_evento), mes = month(fecha_evento)) %>%
count(anio, mes, categoria_arma, name = «n») %>%
complete(
anio = 2021:2026,
mes = 1:12,
categoria_arma = categorias,
fill = list(n = 0)
) %>%
filter(!(anio == 2026 & mes > 8)) %>%
pivot_wider(names_from = categoria_arma, values_from = n) %>%
arrange(anio, mes) %>%
mutate(
periodo = sprintf(«%04d-%02d», anio, mes),
mes_nombre = c(
«Enero», «Febrero», «Marzo», «Abril», «Mayo», «Junio»,
«Julio», «Agosto», «Septiembre», «Octubre», «Noviembre», «Diciembre»
)[mes],
total = `Armas cortas` + `Fusiles, rifles y carabinas` +
`Escopetas` + `Ametralladoras y subametralladoras` +
`Lanzagranadas, morteros y cañones` + `Lanzadores de gases` +
`Tipo no especificado o por verificar`
)

totales_cat df_fil %>%
count(categoria_arma, name = «n») %>%
mutate(
categoria_arma = factor(categoria_arma, levels = categorias),
pct = round(100 * n / sum(n), 1)
) %>%
arrange(categoria_arma)

totales_obj df_fil %>%
count(nombre_objeto, categoria_arma, name = «n», sort = TRUE) %>%
mutate(pct = round(100 * n / sum(n), 1))

totales_prov df_fil %>%
filter(!is.na(nombre_provincia), nombre_provincia != «») %>%
count(nombre_provincia, name = «n», sort = TRUE) %>%
mutate(pct = round(100 * n / sum(n), 1))

evol_prov_anual df_fil %>%
filter(!is.na(nombre_provincia), nombre_provincia != «») %>%
mutate(anio = year(fecha_evento)) %>%
count(nombre_provincia, anio, name = «n») %>%
complete(
nombre_provincia = unique(.$nombre_provincia),
anio = 2021:2026,
fill = list(n = 0)
) %>%
pivot_wider(names_from = anio, values_from = n, names_prefix = «a») %>%
mutate(total = a2021 + a2022 + a2023 + a2024 + a2025 + a2026) %>%
arrange(desc(total))

evol_prov_cat df_fil %>%
filter(!is.na(nombre_provincia), nombre_provincia != «») %>%
count(nombre_provincia, categoria_arma, name = «n») %>%
pivot_wider(names_from = categoria_arma, values_from = n, values_fill = 0) %>%
mutate(total = rowSums(across(-nombre_provincia))) %>%
arrange(desc(total))

top5_prov head(totales_prov$nombre_provincia, 5)

evol_prov_mensual_top5 df_fil %>%
filter(nombre_provincia %in% top5_prov) %>%
mutate(periodo = format(fecha_evento, «%Y-%m»)) %>%
count(periodo, nombre_provincia, name = «n») %>%
complete(
periodo = format(seq(as.Date(«2021-01-01»), as.Date(«2026-08-01»), by = «month»), «%Y-%m»),
nombre_provincia = top5_prov,
fill = list(n = 0)
) %>%
pivot_wider(names_from = nombre_provincia, values_from = n) %>%
arrange(periodo)

ruta_salida file.path(ruta, «mensual_armas_2021_2026_por_tipo_y_provincia.txt»)
sink(ruta_salida)

cat(«=====================================================================\n»)
cat(» ARMAS DE FUEGO ILÍCITAS DECOMISADAS – POLICÍA NACIONAL DEL ECUADOR\n»)
cat(» Desagregado por tipo de arma y por provincia\n»)
cat(» Periodo: enero 2021 – agosto 2026\n»)
cat(» Generado:», format(Sys.time(), «%Y-%m-%d %H:%M:%S»), «\n»)
cat(«=====================================================================\n\n»)

cat(«Archivos fuente:\n»)
cat(» -«, basename(archivo_2026), «\n»)
cat(» -«, basename(archivo_hist), «\n\n»)

cat(«— 1. CUADRO MENSUAL POR TIPO DE ARMA —\n\n»)
cat(sprintf(
«%-9s %-11s %7s %8s %8s %8s %8s %7s %10s %8s\n»,
«Periodo», «Mes», «Cortas», «Fus/Rif», «Escop», «Ametr», «Lanz», «Gases»,
«No espec.», «Total»
))
cat(strrep(«-«, 100), «\n»)
for (i in seq_len(nrow(mensual_cat))) {
r mensual_cat[i, ]
cat(sprintf(
«%-9s %-11s %7d %8d %8d %8d %8d %7d %10d %8d\n»,
r$periodo, r$mes_nombre,
r$`Armas cortas`,
r$`Fusiles, rifles y carabinas`,
r$`Escopetas`,
r$`Ametralladoras y subametralladoras`,
r$`Lanzagranadas, morteros y cañones`,
r$`Lanzadores de gases`,
r$`Tipo no especificado o por verificar`,
r$total
))
}
cat(strrep(«-«, 100), «\n»)
cat(sprintf(
«%-21s %7d %8d %8d %8d %8d %7d %10d %8d\n»,
«TOTAL PERIODO»,
sum(mensual_cat$`Armas cortas`),
sum(mensual_cat$`Fusiles, rifles y carabinas`),
sum(mensual_cat$`Escopetas`),
sum(mensual_cat$`Ametralladoras y subametralladoras`),
sum(mensual_cat$`Lanzagranadas, morteros y cañones`),
sum(mensual_cat$`Lanzadores de gases`),
sum(mensual_cat$`Tipo no especificado o por verificar`),
sum(mensual_cat$total)
))
cat(«\n\n»)

cat(«— 2. TOTALES POR TIPO DE ARMA (2021-2026) —\n\n»)
cat(sprintf(«%-42s %10s %8s\n», «Categoría», «Casos», «%»))
cat(strrep(«-«, 62), «\n»)
for (i in seq_len(nrow(totales_cat))) {
cat(sprintf(
«%-42s %10d %7.1f%%\n»,
as.character(totales_cat$categoria_arma[i]),
totales_cat$n[i],
totales_cat$pct[i]
))
}
cat(strrep(«-«, 62), «\n»)
cat(sprintf(«%-42s %10d %7.1f%%\n», «TOTAL», sum(totales_cat$n), 100))
cat(«\n\n»)

cat(«— 3. TOTALES POR nombre_objeto (2021-2026) —\n\n»)
cat(sprintf(«%-24s %-40s %10s %8s\n», «nombre_objeto», «Categoría», «Casos», «%»))
cat(strrep(«-«, 86), «\n»)
for (i in seq_len(nrow(totales_obj))) {
cat(sprintf(
«%-24s %-40s %10d %7.1f%%\n»,
totales_obj$nombre_objeto[i],
totales_obj$categoria_arma[i],
totales_obj$n[i],
totales_obj$pct[i]
))
}
cat(strrep(«-«, 86), «\n»)
cat(sprintf(«%-24s %-40s %10d %7.1f%%\n», «TOTAL», «», sum(totales_obj$n), 100))
cat(«\n\n»)

cat(«— 4. TOTAL POR PROVINCIA (2021-2026) —\n\n»)
cat(sprintf(«%-38s %10s %8s\n», «Provincia», «Casos», «%»))
cat(strrep(«-«, 58), «\n»)
for (i in seq_len(nrow(totales_prov))) {
cat(sprintf(
«%-38s %10d %7.1f%%\n»,
totales_prov$nombre_provincia[i],
totales_prov$n[i],
totales_prov$pct[i]
))
}
cat(strrep(«-«, 58), «\n»)
cat(sprintf(«%-38s %10d %7.1f%%\n», «TOTAL», sum(totales_prov$n), 100))
cat(«\n\n»)

cat(«— 5. EVOLUCIÓN ANUAL POR PROVINCIA (2021-2026) —\n\n»)
cat(«(Provincias ordenadas por total del periodo)\n\n»)
cat(sprintf(
«%-38s %6s %6s %6s %6s %6s %6s %8s\n»,
«Provincia», «2021», «2022», «2023», «2024», «2025», «2026*», «Total»
))
cat(strrep(«-«, 88), «\n»)
for (i in seq_len(nrow(evol_prov_anual))) {
r evol_prov_anual[i, ]
cat(sprintf(
«%-38s %6d %6d %6d %6d %6d %6d %8d\n»,
r$nombre_provincia,
r$a2021, r$a2022, r$a2023, r$a2024, r$a2025, r$a2026,
r$total
))
}
cat(strrep(«-«, 88), «\n»)
cat(sprintf(
«%-38s %6d %6d %6d %6d %6d %6d %8d\n»,
«TOTAL NACIONAL»,
sum(evol_prov_anual$a2021),
sum(evol_prov_anual$a2022),
sum(evol_prov_anual$a2023),
sum(evol_prov_anual$a2024),
sum(evol_prov_anual$a2025),
sum(evol_prov_anual$a2026),
sum(evol_prov_anual$total)
))
cat(«\n* 2026 corresponde solo a enero-agosto.\n\n»)

cat(«— 6. TOTAL POR PROVINCIA Y TIPO DE ARMA (2021-2026) —\n\n»)
cat(sprintf(
«%-30s %6s %6s %6s %6s %6s %6s %6s %8s\n»,
«Provincia», «Cort», «FusRif», «Escop», «Ametr», «Lanz», «Gases»,
«NoEsp», «Total»
))
cat(strrep(«-«, 92), «\n»)
for (i in seq_len(nrow(evol_prov_cat))) {
r evol_prov_cat[i, ]
getv function(col) if (col %in% names(r)) r[[col]] else 0
cat(sprintf(
«%-30s %6d %6d %6d %6d %6d %6d %6d %8d\n»,
substr(r$nombre_provincia, 1, 30),
getv(«Armas cortas»),
getv(«Fusiles, rifles y carabinas»),
getv(«Escopetas»),
getv(«Ametralladoras y subametralladoras»),
getv(«Lanzagranadas, morteros y cañones»),
getv(«Lanzadores de gases»),
getv(«Tipo no especificado o por verificar»),
r$total
))
}
cat(«\n\n»)

cat(«— 7. EVOLUCIÓN MENSUAL – TOP 5 PROVINCIAS —\n\n»)
cat(«(Las 5 provincias con mayor decomiso en el periodo)\n\n»)
cat(sprintf(«%-9s», «Periodo»))
for (p in top5_prov) cat(sprintf(» %10s», substr(p, 1, 10)))
cat(sprintf(» %8s\n», «Total»))
cat(strrep(«-«, 9 + 11 * (length(top5_prov) + 1)), «\n»)
for (i in seq_len(nrow(evol_prov_mensual_top5))) {
r evol_prov_mensual_top5[i, ]
cat(sprintf(«%-9s», r$periodo))
fila_total 0
for (p in top5_prov) {
val r[[p]]
if (is.null(val) || is.na(val)) val 0
fila_total fila_total + val
cat(sprintf(» %10d», val))
}
cat(sprintf(» %8d\n», fila_total))
}
cat(strrep(«-«, 9 + 11 * (length(top5_prov) + 1)), «\n»)
cat(sprintf(«%-9s», «TOTAL»))
for (p in top5_prov) {
cat(sprintf(» %10d», sum(evol_prov_mensual_top5[[p]], na.rm = TRUE)))
}
cat(sprintf(» %8d\n», sum(evol_prov_mensual_top5[, -1], na.rm = TRUE)))
cat(«\n»)

sink()