1 Introducción

Este informe describe la evolución de las importaciones y exportaciones de productos asociados al rubro forestal en Paraguay. La unidad de análisis disponible es el ítem declarado en Aduanas; por ello, el número de filas no equivale al número de despachos.

1.1 Fuente y período

Los datos se obtuvieron del portal de datos abiertos de la Dirección Nacional de Ingresos Tributarios (DNIT), a partir de archivos mensuales de la Dirección Nacional de Aduanas. El período efectivo depende de los archivos presentes en la carpeta indicada en el código.

Fuente: Datos abiertos de la DNIT.

1.2 Objetivos

1.2.1 Objetivo general

Analizar el comportamiento del comercio exterior de productos del rubro forestal en Paraguay, considerando operaciones, volumen, valor FOB, productos, mercados, aduanas y medios de transporte.

1.2.2 Objetivos específicos

  1. Caracterizar las operaciones según tipo y categoría forestal.
  2. Describir el volumen físico mediante peso neto y cantidad estadística.
  3. Analizar la evolución anual y mensual del comercio forestal.
  4. Identificar los principales productos comercializados.
  5. Identificar los principales países de origen y procedencia/destino.
  6. Describir las aduanas y los medios de transporte utilizados.

1.3 Metodología y alcance del filtro

La clasificación se basa en el campo RUBRO publicado por Aduanas y se limita a seis categorías: Madera, Carbón vegetal, Capítulo 45 (corcho), Capítulo 47 (pasta de madera/celulosa), Papel y cartón, y Capítulo 46 (manufacturas de espartería/cestería). Se toleran diferencias de tildes, espacios y puntuación en las etiquetas de capítulos. El catálogo detectado se imprime para revisar las etiquetas efectivamente incluidas.

Este criterio es una aproximación temática, no una clasificación oficial exhaustiva del sector forestal. Antes de presentar resultados definitivos, conviene revisar la tabla de categorías detectadas y ajustar el patrón si el estudio considera otros productos o excluye alguno de ellos.

Las métricas monetarias y físicas se convierten usando coma decimal y punto de miles cuando la fuente las entrega como texto. Los despachos se cuentan mediante identificadores distintos de DESPACHO CIFRADO; el peso y FOB se suman a nivel de ítem.

2 Inventario de archivos

inventario <- tibble::tibble(archivo = basename(archivos)) |>
  dplyr::mutate(
    anio = as.integer(substr(archivo, 1, 4)),
    mes = sub("^[0-9]{4}_", "", sub("\\.parquet$", "", archivo))
  ) |>
  dplyr::count(anio, name = "archivos_mensuales") |>
  dplyr::arrange(anio)

knitr::kable(inventario, caption = "Archivos mensuales disponibles por año")
Archivos mensuales disponibles por año
anio archivos_mensuales
2016 12
2017 12
2018 12
2019 12
2020 12
2021 12
2022 12
2023 12
2024 12
2025 12
2026 8
cat("\nTotal de archivos mensuales:", length(archivos), "\n")
## 
## Total de archivos mensuales: 128
cat("Período cubierto:", min(inventario$anio), "-", max(inventario$anio), "\n")
## Período cubierto: 2016 - 2026

3 Preparación y filtrado

3.1 Identificación de categorías forestales

Primero se inspecciona únicamente la columna RUBRO de cada archivo. Así se obtiene el catálogo sin cargar todas las columnas ni todas las filas en memoria.

rubros_catalogo <- unique(unlist(lapply(archivos, function(archivo) {
  arrow::open_dataset(archivo, format = "parquet") |>
    dplyr::select(RUBRO) |>
    dplyr::distinct() |>
    dplyr::collect() |>
    dplyr::pull(RUBRO)
}), use.names = FALSE))

rubros_normalizados <- normalizar_texto(rubros_catalogo)
patrones_forestales <- c(
  "^MADERA$",
  "^CARBON VEGETAL$",
  "^CAPITULO\\s*45\\s*[-:]*\\s*CORCHO",
  "^CAPITULO\\s*47.*(PASTA DE MADERA|MATERIAS FIBROSAS CELULOSICAS)",
  "^PAPEL Y CARTON$",
  "^CAPITULO\\s*46.*(ESPARTERIA|CESTERIA)"
)
coincide_forestal <- Reduce(
  `|`,
  lapply(patrones_forestales, grepl, x = rubros_normalizados)
)
rubros_forestales <- rubros_catalogo[coincide_forestal]
rubros_forestales <- sort(unique(rubros_forestales[!is.na(rubros_forestales)]))

if (length(rubros_forestales) == 0) {
  stop("No se encontraron las seis categorías forestales esperadas en RUBRO.")
}

knitr::kable(
  tibble::tibble(rubro_detectado = rubros_forestales),
  caption = "Categorías incluidas por el filtro forestal"
)
Categorías incluidas por el filtro forestal
rubro_detectado
CAPITULO 45CORCHO Y MANUFACTURAS DE CORCHO
CAPITULO 46 MANUFACTURAS DE ESPARTERIA O DE CESTERIA
CAPITULO 47 PASTA DE MADERA O DE OTRAS MATERIAS FIBROSAS CELULOSICAS ,DESPERDICIOS Y DESECHOS DE PA
CARBON VEGETAL
MADERA
PAPEL Y CARTON

3.2 Normalización mensual

Se filtra cada mes antes de leerlo en memoria. La caché contiene solo las columnas necesarias para el análisis y emplea tipos homogéneos; de esta forma se pueden combinar años en los que los importes fueron almacenados como texto con otros en los que fueron almacenados como números.

if (reprocesar_cache && dir.exists(dir_cache)) {
  unlink(dir_cache, recursive = TRUE, force = TRUE)
}
dir.create(dir_cache, recursive = TRUE, showWarnings = FALSE)

columnas_necesarias <- c(
  "DESPACHO CIFRADO", "OPERACION", "AÑO", "MES", "ADUANA",
  "MEDIO TRANSPORTE", "PAIS ORIGEN", "PAIS PROCEDENCIA/DESTINO",
  "UNIDAD MEDIDA ESTADISTICA", "CANTIDAD ESTADISTICA", "KILO NETO",
  "KILO BRUTO", "FOB DOLAR", "RUBRO", "MERCADERIA"
)

normalizar_texto_local <- function(x) {
  x <- toupper(trimws(as.character(x)))
  iconv(x, from = "", to = "ASCII//TRANSLIT")
}

parsear_numero_local <- function(x) {
  if (is.numeric(x)) return(as.double(x))

  readr::parse_number(
    as.character(x),
    locale = readr::locale(decimal_mark = ",", grouping_mark = ".")
  )
}

for (archivo in archivos) {
  salida <- file.path(dir_cache, basename(archivo))

  if (!reprocesar_cache && file.exists(salida) && file.info(salida)$size > 0) {
    next
  }

  tryCatch({
    mensual <- arrow::open_dataset(archivo, format = "parquet") |>
      dplyr::filter(RUBRO %in% rubros_forestales) |>
      dplyr::collect()

    names(mensual) <- trimws(names(mensual))

    faltantes <- setdiff(columnas_necesarias, names(mensual))
    if (length(faltantes) > 0) {
      stop("Faltan columnas: ", paste(faltantes, collapse = ", "))
    }

    # Selección en R después del filtro Arrow; evita problemas con any_of().
    mensual <- mensual[, columnas_necesarias, drop = FALSE]

    mensual_limpio <- data.frame(
      despacho = as.character(mensual[["DESPACHO CIFRADO"]]),
      operacion = normalizar_texto_local(mensual[["OPERACION"]]),
      anio = suppressWarnings(as.integer(as.character(mensual[["AÑO"]]))),
      mes = normalizar_texto_local(mensual[["MES"]]),
      aduana = as.character(mensual[["ADUANA"]]),
      medio_transporte = as.character(mensual[["MEDIO TRANSPORTE"]]),
      pais_origen = as.character(mensual[["PAIS ORIGEN"]]),
      pais_procedencia_destino = as.character(mensual[["PAIS PROCEDENCIA/DESTINO"]]),
      unidad_estadistica = as.character(mensual[["UNIDAD MEDIDA ESTADISTICA"]]),
      cantidad_estadistica = parsear_numero_local(mensual[["CANTIDAD ESTADISTICA"]]),
      kilo_neto = parsear_numero_local(mensual[["KILO NETO"]]),
      kilo_bruto = parsear_numero_local(mensual[["KILO BRUTO"]]),
      fob_dolar = parsear_numero_local(mensual[["FOB DOLAR"]]),
      rubro = as.character(mensual[["RUBRO"]]),
      mercaderia = as.character(mensual[["MERCADERIA"]]),
      stringsAsFactors = FALSE
    )

    arrow::write_parquet(mensual_limpio, salida, compression = "zstd")
    cat("Procesado:", basename(archivo), "\n")
  }, error = function(e) {
    stop(
      "Error procesando ", basename(archivo), ": ",
      conditionMessage(e),
      call. = FALSE
    )
  })
}

archivos_forestales <- list.files(
  dir_cache,
  pattern = "\\.parquet$",
  full.names = TRUE
)

if (length(archivos_forestales) == 0) {
  stop("No se generaron archivos filtrados; compruebe las categorías y columnas.")
}

forestal <- arrow::open_dataset(archivos_forestales, format = "parquet")

filas_forestales <- forestal |>
  dplyr::summarise(total = dplyr::n()) |>
  dplyr::collect() |>
  dplyr::pull(total)

cat("Archivos forestales normalizados:", length(archivos_forestales), "\n")
cat("Registros forestales:", base::format(filas_forestales, big.mark = "."), "\n")

3.3 Validación del subconjunto

resumen_rubros <- forestal |>
  dplyr::count(rubro, sort = TRUE) |>
  dplyr::collect()
knitr::kable(resumen_rubros, caption = "Registros por categoría forestal")
Registros por categoría forestal
rubro n
PAPEL Y CARTON 747201
MADERA 140295
CARBON VEGETAL 48645
CAPITULO 47 PASTA DE MADERA O DE OTRAS MATERIAS FIBROSAS CELULOSICAS ,DESPERDICIOS Y DESECHOS DE PA 9511
CAPITULO 46 MANUFACTURAS DE ESPARTERIA O DE CESTERIA 6568
CAPITULO 13GOMAS, RESINAS Y DEMAS JUGOS Y EXTRACTOS VEGETALES 5995
CAPITULO 45CORCHO Y MANUFACTURAS DE CORCHO 1079
CAPITULO 55 FIBRAS SINTETICAS O ARTIFICIALES DISCONTINUAS 10
resumen_operaciones <- forestal |>
  dplyr::group_by(operacion) |>
  dplyr::summarise(
    despachos = dplyr::n_distinct(despacho),
    registros = dplyr::n(),
    .groups = "drop"
  ) |>
  dplyr::collect()
knitr::kable(resumen_operaciones, caption = "Validación por tipo de operación")
Validación por tipo de operación
operacion despachos registros
IMPORTACION 187874 809833
EXPORTACION 101975 149471

4 Caracterización del comercio

4.1 Operaciones por tipo y categoría

operaciones_tipo <- forestal |>
  dplyr::group_by(operacion) |>
  dplyr::summarise(
    operaciones = dplyr::n_distinct(despacho),
    registros = dplyr::n(),
    toneladas = sum(kilo_neto, na.rm = TRUE) / 1000,
    valor_fob_usd = sum(fob_dolar, na.rm = TRUE),
    .groups = "drop"
  ) |>
  dplyr::collect() |>
  dplyr::arrange(dplyr::desc(operaciones))

knitr::kable(operaciones_tipo, digits = 2, caption = "Comercio forestal por operación")
Comercio forestal por operación
operacion operaciones registros toneladas valor_fob_usd
IMPORTACION 187874 809833 7967486 17893145164
EXPORTACION 101975 149471 4603494 3206978994
ggplot(operaciones_tipo, aes(x = reorder(operacion, operaciones), y = operaciones, fill = operacion)) +
  geom_col(show.legend = FALSE) +
  coord_flip() +
  scale_y_continuous(labels = scales::label_comma(big.mark = ".", decimal.mark = ",")) +
  labs(title = "Despachos por tipo de operación", x = NULL, y = "Despachos distintos") +
  theme_minimal(base_size = 12)

operaciones_rubro <- forestal |>
  dplyr::group_by(rubro, operacion) |>
  dplyr::summarise(
    operaciones = dplyr::n_distinct(despacho),
    toneladas = sum(kilo_neto, na.rm = TRUE) / 1000,
    .groups = "drop"
  ) |>
  dplyr::collect()
ggplot(operaciones_rubro, aes(x = reorder(rubro, operaciones), y = operaciones, fill = operacion)) +
  geom_col(position = "dodge") +
  coord_flip() +
  scale_y_continuous(labels = scales::label_comma(big.mark = ".", decimal.mark = ",")) +
  labs(title = "Despachos por categoría y operación", x = NULL, y = "Despachos distintos", fill = "Operación") +
  theme_minimal(base_size = 11)

4.2 Volumen físico y valor FOB

volumen_valor <- forestal |>
  dplyr::group_by(operacion) |>
  dplyr::summarise(
    toneladas = sum(kilo_neto, na.rm = TRUE) / 1000,
    valor_fob_usd = sum(fob_dolar, na.rm = TRUE),
    .groups = "drop"
  ) |>
  dplyr::collect()

knitr::kable(volumen_valor, digits = 2, caption = "Peso neto y valor FOB por operación")
Peso neto y valor FOB por operación
operacion toneladas valor_fob_usd
IMPORTACION 7967486 17893145164
EXPORTACION 4603494 3206978994
ggplot(volumen_valor, aes(x = reorder(operacion, toneladas), y = toneladas, fill = operacion)) +
  geom_col(show.legend = FALSE) +
  coord_flip() +
  scale_y_continuous(labels = scales::label_number(big.mark = ".", decimal.mark = ",")) +
  labs(title = "Volumen físico por tipo de operación", x = NULL, y = "Toneladas netas") +
  theme_minimal(base_size = 12)

4.3 Evolución temporal

evolucion_anual <- forestal |>
  dplyr::group_by(anio, operacion) |>
  dplyr::summarise(
    operaciones = dplyr::n_distinct(despacho),
    toneladas = sum(kilo_neto, na.rm = TRUE) / 1000,
    valor_fob_usd = sum(fob_dolar, na.rm = TRUE),
    .groups = "drop"
  ) |>
  dplyr::collect()

ggplot(evolucion_anual, aes(x = anio, y = toneladas, color = operacion, group = operacion)) +
  geom_line(linewidth = 0.9) +
  geom_point(size = 2) +
  scale_x_continuous(breaks = sort(unique(evolucion_anual$anio))) +
  scale_y_continuous(labels = scales::label_number(big.mark = ".", decimal.mark = ",")) +
  labs(title = "Evolución anual del volumen forestal", x = "Año", y = "Toneladas netas", color = "Operación") +
  theme_minimal(base_size = 11) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

mensual_anual <- forestal |>
  dplyr::group_by(anio, mes, operacion) |>
  dplyr::summarise(
    operaciones = dplyr::n_distinct(despacho),
    toneladas = sum(kilo_neto, na.rm = TRUE) / 1000,
    .groups = "drop"
  ) |>
  dplyr::collect() |>
  dplyr::mutate(mes_num = match(normalizar_texto(mes), meses_es)) |>
  dplyr::filter(!is.na(mes_num))

estacionalidad <- mensual_anual |>
  dplyr::group_by(mes_num, operacion) |>
  dplyr::summarise(
    toneladas_promedio = mean(toneladas, na.rm = TRUE),
    operaciones_promedio = mean(operaciones, na.rm = TRUE),
    .groups = "drop"
  ) |>
  dplyr::mutate(mes = factor(meses_es[mes_num], levels = meses_es))

ggplot(estacionalidad, aes(x = mes, y = toneladas_promedio, color = operacion, group = operacion)) +
  geom_line(linewidth = 0.9) +
  geom_point(size = 2) +
  scale_y_continuous(labels = scales::label_number(big.mark = ".", decimal.mark = ",")) +
  labs(title = "Volumen mensual promedio por operación", x = "Mes", y = "Toneladas promedio", color = "Operación") +
  theme_minimal(base_size = 11) +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

5 Productos

productos_base <- forestal |>
  dplyr::select(operacion, mercaderia, despacho, kilo_neto, fob_dolar) |>
  dplyr::collect() |>
  as.data.frame()

top_productos <- productos_base |>
  dplyr::filter(
    !is.na(mercaderia),
    trimws(as.character(mercaderia)) != ""
  ) |>
  dplyr::group_by(operacion, mercaderia) |>
  dplyr::summarise(
    operaciones = dplyr::n_distinct(despacho),
    toneladas = sum(kilo_neto, na.rm = TRUE) / 1000,
    valor_fob_usd = sum(fob_dolar, na.rm = TRUE),
    .groups = "drop"
  ) |>
  dplyr::group_by(operacion) |>
  dplyr::slice_max(
    order_by = operaciones,
    n = 10,
    with_ties = FALSE
  ) |>
  dplyr::ungroup()

knitr::kable(
  top_productos,
  digits = 2,
  caption = "Diez principales mercaderías por operación"
)
Diez principales mercaderías por operación
operacion mercaderia operaciones toneladas valor_fob_usd
EXPORTACION LOS DEMAS PAPELES Y CARTONES DE GRAMAJE SUPERIOR A 150 G/M2 19172 763497.75 738553699.88
EXPORTACION LATERAL DE CARTON 1344 332.43 19688.24
EXPORTACION CARBON VEGETAL EN BOLSAS 1063 102294.12 37894237.49
EXPORTACION CARBON VEGETAL EN BOLSAS. 647 66693.15 21615351.91
EXPORTACION CARBON VEGETAL 580 34728.74 11136789.79
EXPORTACION PBL-CARTON YESO 559 71068.00 40545964.98
EXPORTACION FORRO DE CARTON 486 19.94 2969.14
EXPORTACION MADERA TERCIADA Y/O MULTILAMINADA 411 13514.51 8281144.11
EXPORTACION LOS DEMAS PAPELES Y CARTONES DE GRAMAJE INFERIOR O IGUAL A 150 G/M2 401 12909.64 12595468.99
EXPORTACION CAJAS 377 52.18 661298.78
IMPORTACION CAJAS DE PAPEL ONDULADO DE DIFERENTES MEDIDAS 667 4903.18 3978943.61
IMPORTACION CAJAS DE CARTON CORRUGADO, DE DISTINTAS MEDIDAS, PARA CARNE, SEGUN DESCRIPCION EN SUB-ITEM: 650 9079.81 7757984.23
IMPORTACION ALMOHADILLAS(PAD) PAD FOR AUTOMOTIVE HARNES PRODUCTION 541 431.49 5517135.91
IMPORTACION LOS DEMAS, (66) UNI MDF DETALLADO EN LA SUBITEM 541 3863.91 1741413.43
IMPORTACION FONDOS DE CARTON CORRUGADO. 540 4631.34 5417819.85
IMPORTACION PAPEL HIGIENICO,EN: 528 25512.83 46516319.38
IMPORTACION ETIQUETA . 517 1111.57 5106898.75
IMPORTACION LOS DEMAS, (66) UNI MDF DETALLADO SEGUN SUBITEM 515 3727.12 1866901.97
IMPORTACION ETIQUETAS (LABEL) IDENTIFICATION LABELS FOR AUTOMOTIVE HARNESS PRODUCTION 447 63.82 1143038.23
IMPORTACION JUNTA 441 4.56 225486.72
ggplot(
  top_productos,
  aes(x = reorder(mercaderia, operaciones), y = operaciones, fill = operacion)
) +
  geom_col(show.legend = FALSE) +
  coord_flip() +
  facet_wrap(~ operacion, scales = "free_y") +
  labs(
    title = "Principales mercaderías forestales",
    x = NULL,
    y = "Despachos distintos"
  ) +
  theme_minimal(base_size = 10)

6 Países de origen y destino

paises_base <- forestal |>
  dplyr::select(
    operacion,
    pais_origen,
    pais_procedencia_destino,
    despacho,
    kilo_neto
  ) |>
  dplyr::collect() |>
  as.data.frame()

paises <- paises_base |>
  dplyr::mutate(
    pais = ifelse(
      operacion == "IMPORTACION",
      pais_origen,
      pais_procedencia_destino
    )
  ) |>
  dplyr::filter(
    !is.na(pais),
    trimws(as.character(pais)) != ""
  ) |>
  dplyr::group_by(operacion, pais) |>
  dplyr::summarise(
    operaciones = dplyr::n_distinct(despacho),
    toneladas = sum(kilo_neto, na.rm = TRUE) / 1000,
    .groups = "drop"
  ) |>
  dplyr::group_by(operacion) |>
  dplyr::slice_max(
    order_by = operaciones,
    n = 10,
    with_ties = FALSE
  ) |>
  dplyr::ungroup()

knitr::kable(
  paises,
  digits = 2,
  caption = "Principales países por operación"
)
Principales países por operación
operacion pais operaciones toneladas
EXPORTACION BRASIL 14108 542157.57
EXPORTACION CHILE 8460 359335.34
EXPORTACION ESTADOS UNIDOS DE AMERICA 7179 207371.57
EXPORTACION BR - BRASIL 6540 236701.58
EXPORTACION ARGENTINA 6481 346027.11
EXPORTACION URUGUAY 5723 174225.44
EXPORTACION REINO UNIDO 4758 415717.15
EXPORTACION CL - CHILE 4501 195897.57
EXPORTACION US - ESTADOS UNIDOS DE AMERICA 3340 123875.82
EXPORTACION AR - ARGENTINA 3113 123247.60
IMPORTACION BRASIL 66188 3004663.30
IMPORTACION BR - BRASIL 31044 1639877.49
IMPORTACION CHINA 20496 336984.08
IMPORTACION ARGENTINA 12677 554007.82
IMPORTACION CN - CHINA 9411 182596.04
IMPORTACION ESTADOS UNIDOS DE AMERICA 6526 132710.19
IMPORTACION AR - ARGENTINA 4992 306839.79
IMPORTACION ALEMANIA 3509 77230.18
IMPORTACION CHILE 2665 58757.35
IMPORTACION US - ESTADOS UNIDOS DE AMERICA 2658 59988.44
ggplot(
  paises,
  aes(x = reorder(pais, operaciones), y = operaciones, fill = operacion)
) +
  geom_col(show.legend = FALSE) +
  coord_flip() +
  facet_wrap(~ operacion, scales = "free_y") +
  labs(
    title = "Principales países de origen y destino",
    x = NULL,
    y = "Despachos distintos"
  ) +
  theme_minimal(base_size = 10)

7 Aduanas y transporte

logistica_base <- forestal |>
  dplyr::select(
    operacion,
    aduana,
    medio_transporte,
    despacho,
    kilo_neto
  ) |>
  dplyr::collect() |>
  as.data.frame()

resumen_aduanas <- logistica_base |>
  dplyr::filter(!is.na(aduana), trimws(as.character(aduana)) != "") |>
  dplyr::group_by(operacion, aduana) |>
  dplyr::summarise(
    operaciones = dplyr::n_distinct(despacho),
    toneladas = sum(kilo_neto, na.rm = TRUE) / 1000,
    .groups = "drop"
  ) |>
  dplyr::group_by(operacion) |>
  dplyr::slice_max(
    order_by = operaciones,
    n = 10,
    with_ties = FALSE
  ) |>
  dplyr::ungroup()

resumen_transporte <- logistica_base |>
  dplyr::filter(
    !is.na(medio_transporte),
    trimws(as.character(medio_transporte)) != ""
  ) |>
  dplyr::group_by(operacion, medio_transporte) |>
  dplyr::summarise(
    operaciones = dplyr::n_distinct(despacho),
    toneladas = sum(kilo_neto, na.rm = TRUE) / 1000,
    .groups = "drop"
  ) |>
  dplyr::group_by(operacion) |>
  dplyr::slice_max(
    order_by = operaciones,
    n = 10,
    with_ties = FALSE
  ) |>
  dplyr::ungroup()

knitr::kable(resumen_aduanas, digits = 2, caption = "Principales aduanas")
Principales aduanas
operacion aduana operaciones toneladas
EXPORTACION PUERTO SECO BOREAL 19516 679410.78
EXPORTACION PTO SEGURO FLUVIAL 15895 954341.02
EXPORTACION TER. DE CARGAS KM.12 13621 523421.61
EXPORTACION CAACUPEMI 12198 563421.80
EXPORTACION CHACOI 11484 554251.28
EXPORTACION TERPORT - VILLETA 10437 560380.57
EXPORTACION CAMPESTRE S.A. 5618 98398.79
EXPORTACION PEDRO JUAN CABALLERO 3891 213025.54
EXPORTACION MCAL.ESTIGARRIBIA 2136 60053.13
EXPORTACION ENCARNACION 1587 101205.80
IMPORTACION CIUDAD DEL ESTE 63591 3197051.61
IMPORTACION AEROP. PETTIROSSI 19668 27021.27
IMPORTACION SOLUCION LOGISTICA 12878 350722.40
IMPORTACION PAKSA 11312 534634.40
IMPORTACION CAACUPEMI 9775 840793.22
IMPORTACION PUERTOS Y ESTIBAJES 9489 455650.90
IMPORTACION PTO SEGURO FLUVIAL 8395 533990.20
IMPORTACION JOSE FALCON 6050 471443.01
IMPORTACION TERPORT - VILLETA 5240 387587.07
IMPORTACION EMPEDRIL S.A. 5221 246615.41
knitr::kable(
  resumen_transporte,
  digits = 2,
  caption = "Principales medios de transporte"
)
Principales medios de transporte
operacion medio_transporte operaciones toneladas
EXPORTACION CAMION 59559 2284247.94
EXPORTACION ACUATICO 41636 2309536.32
EXPORTACION AVION 703 5549.89
EXPORTACION PROPIOS MEDIOS 3 290.22
IMPORTACION CAMION 112380 5855595.85
IMPORTACION ACUATICO 22788 1919095.57
IMPORTACION AVION 20395 25898.62
IMPORTACION PROPIOS MEDIOS 281 449.47
ggplot(resumen_aduanas, aes(x = reorder(aduana, operaciones), y = operaciones, fill = operacion)) +
  geom_col(show.legend = FALSE) +
  coord_flip() +
  facet_wrap(~ operacion, scales = "free_y") +
  labs(title = "Principales aduanas forestales", x = NULL, y = "Despachos distintos") +
  theme_minimal(base_size = 10)

ggplot(resumen_transporte, aes(x = reorder(medio_transporte, operaciones), y = operaciones, fill = operacion)) +
  geom_col(show.legend = FALSE) +
  coord_flip() +
  facet_wrap(~ operacion, scales = "free_y") +
  labs(title = "Medios de transporte utilizados", x = NULL, y = "Despachos distintos") +
  theme_minimal(base_size = 10)

8 Consideraciones para interpretar los resultados

9 Referencias

Dirección Nacional de Ingresos Tributarios. Datos abiertos.