0.0.0.1 Reconocimientos y Fuentes Metodológicas

Este documento incorpora la metodología y las funciones especializadas desarrolladas por el MSF. Carlos Ademir Pérez, Docente de la Facultad de Ciencias Económicas de la Universidad de El Salvador (UES).

Las funciones para el cálculo de indicadores de posición y dinamismo comercial se basan en sus aportes metodológicos publicados en RPubs: * Construcción de Base de Comercio Exterior: RPubs - ca_ademir / basecomercioexterior * Indicadores de Comercio Exterior: RPubs - ca_ademir / indicadores_comercio * Ranking Comercio Exterior: RPubs - ca_ademir / ranking_export

Referencia teórica: Durán Lima, José E. y Mariano Alvarez (2008), “Indicadores de comercio exterior y política comercial: mediciones de posición y dinamismo comercial”, CEPAL.

1 Carga y Procesamiento de Datos

En esta sección se importan y consolidan los archivos individuales de datos de comercio exterior.

library(readr)
library(dplyr)
library(tidyr)
library(kableExtra)

1.1 Importaciones

Procesamiento de los registros de compras internacionales:

# Directorio de trabajo para importaciones
setwd("C:/Users/jeffr/OneDrive/Desktop/MAE_CICLO2026/UNIDAD_1/BASE_DATOS_COMERCIO_EXTERIOR/importacion")

# Lectura masiva de archivos delimitados por pipe (|)
archivos_importar <- list.files()

lista_importacion <- lapply(
  archivos_importar,
  FUN = read_delim,
  delim = "|",
  col_names = c("pais", "sac", "anio", "mes", "valor_cif", "kilogramos"),
  col_types = cols(
    pais = "c",
    sac = "c",
    anio = "d",
    mes = "d",
    valor_cif = "d",
    kilogramos = "d"
  ),
  skip = 1
)

# Ensamblar dataframes en un único objeto
data_importaciones <- bind_rows(lista_importacion)

# Visualización de muestra
data_importaciones %>% 
  head() %>% 
  kable(
    format = "html", 
    caption = "El Salvador: Base Muestra de Importaciones",
    align = "c"
  ) %>% 
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"), 
    full_width = TRUE, 
    position = "center"
  ) %>% 
  add_footnote(label = "Fuente: Elaboración propia con base en datos del Banco Central de Reserva (BCR)", notation = "symbol")
El Salvador: Base Muestra de Importaciones
pais sac anio mes valor_cif kilogramos
GROENLANDIA 3814001000 2022 5 3795.41 633.22
CANADA 0511100000 2022 4 17565.11 38.00
CANADA 0712209000 2022 3 512.59 118.73
CANADA 0712209000 2022 6 499.48 92.13
CANADA 0712909000 2022 3 2231.66 729.32
CANADA 0713200000 2022 3 1522.28 1881.60
* Fuente: Elaboración propia con base en datos del Banco Central de Reserva (BCR)

1.2 Exportaciones

Procesamiento de los registros de ventas internacionales:

# Directorio de trabajo para exportaciones
setwd("C:/Users/jeffr/OneDrive/Desktop/MAE_CICLO2026/UNIDAD_1/BASE_DATOS_COMERCIO_EXTERIOR/exportacion")

# Lectura masiva de archivos
archivos_exportar <- list.files()

lista_exportacion <- lapply(
  archivos_exportar,
  FUN = read_delim,
  delim = "|",
  col_names = c("pais", "sac", "anio", "mes", "valor_fob", "kilogramos"),
  col_types = cols(
    pais = "c",
    sac = "c",
    anio = "d",
    mes = "d",
    valor_fob = "d",
    kilogramos = "d"
  ),
  skip = 1
)

# Ensamblar dataframes en un único objeto
data_exportaciones <- bind_rows(lista_exportacion)

# Visualización de muestra
data_exportaciones %>% 
  head() %>% 
  kable(
    format = "html", 
    caption = "El Salvador: Base Muestra de Exportaciones", 
    align = "c"
  ) %>% 
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"), 
    full_width = TRUE, 
    position = "center"
  ) %>% 
  add_footnote(label = "Fuente: Elaboración propia con base en datos del Banco Central de Reserva (BCR)", notation = "symbol")
El Salvador: Base Muestra de Exportaciones
pais sac anio mes valor_fob kilogramos
CANADA 0106190000 2022 6 600.00 9.98
CANADA 0106200000 2022 6 4620.00 10.00
CANADA 0602100000 2022 1 1055690.77 16511.64
CANADA 0602100000 2022 2 819959.20 12047.40
CANADA 0602100000 2022 3 253333.70 2928.69
CANADA 0602100000 2022 4 49719.91 639.52
* Fuente: Elaboración propia con base en datos del Banco Central de Reserva (BCR)

2 Integración de la Base de Comercio Exterior

Consolidación de las bases de Importaciones (\(CIF\)) y Exportaciones (\(FOB\)) mediante una unión completa (full_join) y tratamiento de valores nulos.

# Unir flujos comerciales por llaves principales
data_comercio_exterior <- data_importaciones %>% 
  full_join(
    data_exportaciones,
    by = c("pais", "sac", "anio", "mes"),
    suffix = c("_importaciones", "_exportaciones")
  ) %>% 
  replace_na(
    list(
      valor_cif = 0,
      valor_fob = 0,
      kilogramos_importaciones = 0,
      kilogramos_exportaciones = 0
    )
  ) %>% 
  arrange(pais, anio, mes, sac)

# Visualización del consolidado
data_comercio_exterior %>% 
  head() %>% 
  kable(
    format = "html",
    caption = "Base Consolidada de Comercio Exterior de El Salvador",
    align = "c"
  ) %>% 
  kable_styling(
    bootstrap_options = c("striped", "hover", "condensed", "responsive"), 
    full_width = TRUE, 
    position = "center"
  ) %>% 
  add_footnote(label = "Fuente: Elaboración propia con base en datos del BCR", notation = "symbol")
Base Consolidada de Comercio Exterior de El Salvador
pais sac anio mes valor_cif kilogramos_importaciones valor_fob kilogramos_exportaciones
AFGANISTAN 8708990000 2022 2 220.50 0.29 0 0
AFGANISTAN 8471900000 2022 5 665.90 4.00 0 0
AFGANISTAN 5702310000 2022 6 913.74 22.02 0 0
AFGANISTAN 5702502000 2022 6 566.35 11.36 0 0
AFGANISTAN 6111200000 2022 8 213.69 1.56 0 0
AFGANISTAN 8536509000 2022 9 42.28 2.00 0 0
* Fuente: Elaboración propia con base en datos del BCR

3 Almacenamiento y Recuperación de Datos

# Guardar objeto en formato binario de R (.RData)
save(
  data_comercio_exterior, 
  file = "C:/Users/jeffr/OneDrive/Desktop/MAE_CICLO2026/UNIDAD_1/BASE_DATOS_COMERCIO_EXTERIOR/data_comercio_exterior.RData"
)
# Carga directa del objeto de datos previamente procesado
load("C:/Users/jeffr/OneDrive/Desktop/MAE_CICLO2026/UNIDAD_1/BASE_DATOS_COMERCIO_EXTERIOR/data_comercio_exterior.RData")

4 Carga de Funciones Especializadas

Ejecución del script con las funciones desarrolladas por MSF. Carlos Ademir Pérez para el cálculo de indicadores internacionales:

# Carga de script de funciones
source(
  file = "C:/Users/jeffr/OneDrive/Desktop/MAE_CICLO2026/UNIDAD_1/BASE_COMERCIO_EXTERIOR/funciones_comercio_exterior.R",
  echo = TRUE,
  max.deparse.length = 100,
  encoding = "utf-8"
)
## 
## > options(scipen = 999)
## 
## > library(dplyr)
## 
## > library(readxl)
## 
## > library(stringr)
## 
## > load("C:/Users/jeffr/OneDrive/Desktop/MAE_CICLO2026/UNIDAD_1/BASE_DATOS_COMERCIO_EXTERIOR/data_com ..." ... [TRUNCATED] 
## 
## > nombre_archivo <- "C:/Users/jeffr/OneDrive/Desktop/MAE_CICLO2026/UNIDAD_1/BASE_DATOS_COMERCIO_EXTE ..." ... [TRUNCATED] 
## 
## > nombres_iso_paises <- read_excel(nombre_archivo)
## 
## > nombres_iso_paises$nom_pais_esp <- toupper(nombres_iso_paises$nom_pais_esp)
## 
## > data_comercio_exterior <- data_comercio_exterior %>% 
## +     left_join(nombres_iso_paises, by = c(p .... [TRUNCATED] 
## 
## > herramientas_mostrar_paises <- function() {
## +     paises <- nombres_iso_paises %>% select(nom_pais .... [TRUNCATED] 
## 
## > herramientas_mostrar_regiones <- function() {
## +     nombres_iso_paises %>% group_by(region, cod_re .... [TRUNCATED] 
## 
## > herramientas_mostrar_paises_en_tabla <- function() {
## +     data_comercio_exterior %>% group_by(pai .... [TRUNCATED] 
## 
## > indicadores_IVCR_capitulo <- function(codigo_pais, 
## +     capitulo, anio) {
## +     codigo_pais <- e .... [TRUNCATED] 
## 
## > indicadores_IVCR_partida <- function(codigo_pais, 
## +     partida, anio) {
## +     codigo_pais <- enq .... [TRUNCATED] 
## 
## > indicadores_Balassa_capitulo <- function(codigo_pais, 
## +     capitulo, anio, normalizado = TRUE) { .... [TRUNCATED] 
## 
## > indicadores_Balassa_partida <- function(codigo_pais, 
## +     partida, anio, normalizado = TRUE) {
## + .... [TRUNCATED] 
## 
## > indicadores_IHH_Herfindahl_Hirschmann_anual_texto <- function(codigo_pais, 
## +     anio, normalizad .... [TRUNCATED] 
## 
## > indicadores_IHH_Herfindahl_Hirschmann_anual <- function(codigo_pais, 
## +     anio, normalizado = TR .... [TRUNCATED]

5 Ejemplos Prácticos e Indicadores Comerciales

Demostración del uso de las funciones para explorar catálogos y calcular indicadores clave de competitividad en comercio exterior.

5.1 Consulta de Catálogos Geográficos

# Mostrar primeros países del catálogo
herramientas_mostrar_paises() %>% 
  head() %>% 
  kable(caption = "Catálogo de Países", align = "c") %>% 
  kable_material(html_font = "sans-serif")
Catálogo de Países
nom_pais_esp codigo_pais region cod_region region_intermedia cod_region_intermedia
AFGANISTAN 4 Asia 142 NA NA
ALBANIA 8 Europa 150 NA NA
ALEMANIA 276 Europa 150 NA NA
ANDORRA 20 Europa 150 NA NA
ANGOLA 24 África 2 África Central 17
ANGUILA (R.U.) 660 Américas 19 Caribe 29
# Mostrar regiones
herramientas_mostrar_regiones() %>% 
  head() %>% 
  kable(caption = "Catálogo de Regiones", align = "c") %>% 
  kable_material(html_font = "sans-serif")
Catálogo de Regiones
region cod_region region_intermedia cod_region_intermedia # de Paises incluidos
Américas 19 Caribe 29 26
Américas 19 Centroamérica 13 8
Américas 19 Sudamerica 5 13
Américas 19 NA NA 5
Asia 142 NA NA 50
Europa 150 Islas Del Canal 830 1
# Mostrar catálogo general en formato tabla
herramientas_mostrar_paises_en_tabla() %>% 
  head() %>% 
  kable(caption = "Matriz Geográfica Completa", align = "c") %>% 
  kable_material(html_font = "sans-serif")
Matriz Geográfica Completa
pais anio # Transacciones
AFGANISTAN 2022 6
AFGANISTAN 2023 1
AFGANISTAN 2024 5
AFGANISTAN 2025 8
AFGANISTAN 2026 1
ALBANIA 2022 22

5.2 Cálculo del Índice de Ventaja Comparativa Revelada (IVCR)

Evaluación de la competitividad por capítulo arancelario:

# Cálculo de IVCR para el capítulo '01' (2022-2026)
Resultados_IVCR <- data.frame(
  "años" = 2022:2026,
  "IVCR" = sapply(
    X = 2022:2026, 
    FUN = indicadores_IVCR_capitulo, 
    codigo_pais = 840, 
    capitulo = "01"
  )
)

Resultados_IVCR %>% 
  kable(align = "c", caption = "Evolución del Índice IVCR (Capítulo 01)") %>% 
  kable_material(html_font = "sans-serif")
Evolución del Índice IVCR (Capítulo 01)
años IVCR
2022 -0.1519356
2023 -0.1973216
2024 -0.2803035
2025 -0.2512482
2026 -0.2419462

5.3 Cálculo del Índice de Balassa (IB)

Medición de la especialización comercial intra-producto:

# Cálculo de Índice de Balassa para el capítulo '01' (2023-2024)
Resultados_Balassa <- data.frame(
  "años" = 2023:2025,
  "IB" = sapply(
    X = 2023:2025, 
    FUN = indicadores_Balassa_capitulo, 
    codigo_pais = 840, 
    capitulo = "01"
  )
)

Resultados_Balassa %>% 
  kable(align = "c", caption = "Evolución del Índice de Balassa (Capítulo 01)") %>% 
  kable_material(html_font = "sans-serif")
Evolución del Índice de Balassa (Capítulo 01)
años IB
2023 0.4862753
2024 0.5094811
2025 0.3896520

6 Ranking de Exportaciones

6.1 Creamos los Ranking por Year

#Seleccionar Años
anios_ranking<-2022:2026
data_comercio_exterior %>% 
  filter(anio %in% anios_ranking) ->data_ranking

data_ranking %>% 
  group_by(anio,iso_3) %>% 
  summarise(total=sum(valor_fob)) %>% mutate(percent=round(prop.table(total)*100,2)) %>% 
  slice_max(n = 5,order_by = total) %>% 
  as.data.frame() %>% 
  group_by(anio) %>% 
  mutate(rank = row_number(),
         data=paste(iso_3,"|",percent,sep = "")) %>% 
  select(anio,data,rank) %>% as.data.frame() -> insumo_reporte
print(insumo_reporte)
##    anio      data rank
## 1  2022 USA|38.78    1
## 2  2022 GTM|17.05    2
## 3  2022 HND|16.65    3
## 4  2022  NIC|6.98    4
## 5  2022  CRI|4.27    5
## 6  2023  USA|35.6    1
## 7  2023 GTM|18.45    2
## 8  2023  HND|16.3    3
## 9  2023  NIC|7.85    4
## 10 2023  CRI|4.79    5
## 11 2024 USA|33.84    1
## 12 2024 GTM|19.53    2
## 13 2024 HND|16.14    3
## 14 2024  NIC|8.94    4
## 15 2024  CRI|4.71    5
## 16 2025 USA|32.45    1
## 17 2025 GTM|19.64    2
## 18 2025 HND|16.74    3
## 19 2025  NIC|9.12    4
## 20 2025  CRI|4.45    5
## 21 2026 USA|32.53    1
## 22 2026 GTM|19.46    2
## 23 2026 HND|15.44    3
## 24 2026   NIC|8.7    4
## 25 2026  CRI|4.51    5

6.2 Tabla en formato “RAW”

library(tidyr)
insumo_reporte %>% 
pivot_wider(names_from = rank,values_from = data)->mi_tabla
print(mi_tabla)
## # A tibble: 5 × 6
##    anio `1`       `2`       `3`       `4`      `5`     
##   <dbl> <chr>     <chr>     <chr>     <chr>    <chr>   
## 1  2022 USA|38.78 GTM|17.05 HND|16.65 NIC|6.98 CRI|4.27
## 2  2023 USA|35.6  GTM|18.45 HND|16.3  NIC|7.85 CRI|4.79
## 3  2024 USA|33.84 GTM|19.53 HND|16.14 NIC|8.94 CRI|4.71
## 4  2025 USA|32.45 GTM|19.64 HND|16.74 NIC|9.12 CRI|4.45
## 5  2026 USA|32.53 GTM|19.46 HND|15.44 NIC|8.7  CRI|4.51
mi_tabla %>%
  kable(caption = paste("Top",5,"de Exportaciones periodo",
    min(anios_ranking),"-",max(anios_ranking))) %>%
  add_footnote(label = "Elaboración propia con base en datos del BCR") 
Top 5 de Exportaciones periodo 2022 - 2026
anio 1 2 3 4 5
2022 USA|38.78 GTM|17.05 HND|16.65 NIC|6.98 CRI|4.27
2023 USA|35.6 GTM|18.45 HND|16.3 NIC|7.85 CRI|4.79
2024 USA|33.84 GTM|19.53 HND|16.14 NIC|8.94 CRI|4.71
2025 USA|32.45 GTM|19.64 HND|16.74 NIC|9.12 CRI|4.45
2026 USA|32.53 GTM|19.46 HND|15.44 NIC|8.7 CRI|4.51

Note: aElaboración propia con base en datos del BCR