Ejercicio 1

Compile la información disponible en la “Base de Datos de Comercio Exterior” del BCR, para los años 2018-2020. Y genera una tabla tal como se mostró en las clases (aún no incluya los nombres ISO de los países). Muestre un head de 10 casos.

Tabla de Importaciones

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

setwd("C:/Users/johan/OneDrive/Documentos/A/MAE118/M2018_2020")

archivosM_importar <- list.files()
lista_M <- lapply(archivosM_importar,
                  FUN = read_delim, delim = "|",
                  col_names = c("pais",
                               "sac",
                               "anio",
                               "mes",
                               "valor_cif",
                               "kilogramos"),
                  col_types = cols(pais = "c",
                                   anio = "d",
                                   mes = "d",
                                   valor_cif = "d",
                                   kilogramos = "d"), 
                  skip = 1)
# "c" <- letras
# "d" <- números enteros
importaciones_mensuales_2018_2020<-bind_rows(lista_M)

# La función lapply se usa comúnmente para realizar operaciones repetitivas. En este caso  se utiliza para generar un bucle que lea cada archivo con read_delim(). read_delim() se usa para leer cada archivo delimitado por "|". Se especifican los nombres de las columnas y los tipos de datos utilizando col_names y col_types. También se salta la primera fila (encabezados) con skip = 1. y se almacenen los resultados en una lista llamada lista_M


# La función bind_rows() se utiliza para combinar o unir múltiples data frames en uno solo, apilando las filas de los data frames uno debajo del otro, realizando una concatenación vertical de los datos.

# Formato HTML 
importaciones_mensuales_2018_2020 %>% 
  head() %>% kable(caption ="El Salvador: Base de Importaciones 2018-2020",
                   align = "c") %>% 
  add_footnote(label = "Elaboración propia con base en datos del BCR",
               notation = "symbol") %>% 
  kable_styling()
El Salvador: Base de Importaciones 2018-2020
pais sac anio mes valor_cif kilogramos
Canada 0404900000 2018 2 68040.00 18810.00
Canada 0404900000 2018 3 92725.74 25528.60
Canada 0404900000 2018 4 92546.45 25525.00
Canada 0404900000 2018 6 91531.00 25525.00
Canada 0405100000 2018 6 26.56 20.00
Canada 0511100000 2018 1 16365.04 23.65
* Elaboración propia con base en datos del BCR

Tabla de Exportaciones

setwd("C:/Users/johan/OneDrive/Documentos/A/MAE118/X2018_2020")

archivosX_importar <- list.files()
lista_X <- lapply(archivosX_importar,
                  FUN = read_delim, delim = "|",
                  col_names = c("pais",
                               "sac",
                               "anio",
                               "mes",
                               "valor_fob",
                               "kilogramos"),
                  col_types = cols(pais = "c",
                                   anio = "d",
                                   mes = "d",
                                   valor_fob = "d",
                                   kilogramos = "d"), 
                  skip = 1)

exportaciones_mensuales_2018_2020<-bind_rows(lista_X)

# Formato HTML 
exportaciones_mensuales_2018_2020 %>% 
  head() %>% kable(caption ="El Salvador: Base de Exportaciones 2018-2020",
                   align = "c") %>% 
  add_footnote(label = "Elaboración propia con base en datos del BCR",
               notation = "symbol") %>% 
  kable_styling()
El Salvador: Base de Exportaciones 2018-2020
pais sac anio mes valor_fob kilogramos
Canada 0106900000 2018 2 4667.2 15.0
Canada 0106900000 2018 3 4237.1 14.0
Canada 0106900000 2018 4 3918.0 13.5
Canada 0106900000 2018 5 3155.4 10.0
Canada 0106900000 2018 6 3097.4 9.0
Canada 0305720000 2018 2 2702.3 280.0
* Elaboración propia con base en datos del BCR

Tabla de Comercio Exterior

library(tidyr)
comercio_exterior_2018_2020 <-importaciones_mensuales_2018_2020 %>% full_join(exportaciones_mensuales_2018_2020,
            by = c("pais", "sac", "anio", "mes"),
            suffix = c("_importaciones", "_exportaciones")) 
# suffix nos ayuda a diferenciar variables con el mismo nombre.

# Construcción de la tabla sustituyendo valores NA
comercio_exterior_2018_2020 %>%
  replace_na(
    list(
      valor_cif = 0,
      valor_fob = 0,
      kilogramos_importaciones = 0,
      kilogramos_exportaciones = 0)) %>% 
  arrange(pais, anio, mes, sac) -> comercio_exterior_2018_2020

#Personalización 
data_comercio_exterior_2018_2020 <-comercio_exterior_2018_2020 %>%
  head(10) %>% 
  kable(caption = "Base de Comercio Exterior 2018 - 2020",
        align = "c") %>%
  add_footnote( label = "Elaboración propia con base en datos del BCR",
                notation = "symbol") %>% 
  kable_styling()

data_comercio_exterior_2018_2020
Base de Comercio Exterior 2018 - 2020
pais sac anio mes valor_cif kilogramos_importaciones valor_fob kilogramos_exportaciones
Afganistan 0806200000 2018 6 6448.43 1463.92 0 0
Afganistan 6104220000 2018 10 3153.37 2407.61 0 0
Afganistan 6104620000 2018 10 946.01 722.28 0 0
Afganistan 6105100000 2018 10 9405.39 7181.03 0 0
Afganistan 6106100000 2018 10 1353.32 1725.55 0 0
Afganistan 6405900000 2018 10 2260.03 1725.55 0 0
Afganistan 8206000000 2018 10 6.56 5.02 0 0
Afganistan 6404110000 2019 2 7752.13 6748.03 0 0
Afganistan 6405100000 2019 2 508.03 442.24 0 0
Afganistan 6405900000 2019 2 12.45 10.85 0 0
* Elaboración propia con base en datos del BCR

Guardar tabla de comercio exterior

save(data_comercio_exterior_2018_2020, file = "C:/Users/johan/OneDrive/Documentos/A/MAE118/data_comercio_exterior_2018_2020.Rdata")

Ejercicio 2

Realice la actualización de la tabla anterior con toda la información disponible para 2023.

Update de las importaciones hasta 2023

setwd("C:/Users/johan/OneDrive/Documentos/A/MAE118/M2021_2023")

#Importación de archivos
archivosM_importar <- list.files()
lista_M <- lapply(archivosM_importar,
                  FUN = read_delim, delim = "|",
                  col_names = c("pais",
                               "sac",
                               "anio",
                               "mes",
                               "valor_cif",
                               "kilogramos"),
                  col_types = cols(pais = "c",
                                   anio = "d",
                                   mes = "d",
                                   valor_cif = "d",
                                   kilogramos = "d"), 
                  skip = 1)
#Ensamblar los archivos en un sólo dataframe
data_importaciones_update <- bind_rows(lista_M)

Update de las exportaciones hasta 2023

setwd("C:/Users/johan/OneDrive/Documentos/A/MAE118/X2021_2023")

#Importación de archivos

archivosX_importar <- list.files()
lista_X <- lapply(archivosX_importar,
                  FUN = read_delim, delim = "|",
                  col_names = c("pais",
                               "sac",
                               "anio",
                               "mes",
                               "valor_fob",
                               "kilogramos"),
                  col_types = cols(pais = "c",
                                   anio = "d",
                                   mes = "d",
                                   valor_fob = "d",
                                   kilogramos = "d"), 
                  skip = 1)
#Ensamblar los archivos en un sólo dataframe
data_exportaciones_update <- bind_rows(lista_X)

Concatenar las tablas

data_importaciones_update %>% full_join(
  data_exportaciones_update,
  by = c("pais", "sac", "anio", "mes"),
  suffix = c("_importaciones", "_exportaciones")
) -> data_comercio_exterior_update

#Sustitur los Valores Nulos "NA" y guardar en el mismo objeto

data_comercio_exterior_update %>%
  replace_na(
    list(
      valor_cif = 0,
      valor_fob = 0,
      kilogramos_importaciones = 0,
      kilogramos_exportaciones = 0 ))%>%
  arrange(pais, anio, mes, sac) -> data_comercio_exterior_update

# Unir la tabla de comercio exterior y su actualización

data_comercio_exterior_2018_2023 <-
comercio_exterior_2018_2020 %>% bind_rows(data_comercio_exterior_update) %>%  arrange(pais, anio, mes, sac)

# Guardar antes de personalizar 
save(data_comercio_exterior_2018_2023, file = "C:/Users/johan/OneDrive/Documentos/A/MAE118/data_comercio_exterior_2018_2023.Rdata")

# Mostrar tabla 
data_comercio_exterior_2018_2023 %>% head(10) %>%
  kable(caption = "Base de Comercio Exterior 2018-2023",
        align = "c") %>%
  add_footnote(label = "Elaboración propia con base en datos del BCR", notation = "symbol") %>%  kable_styling()
Base de Comercio Exterior 2018-2023
pais sac anio mes valor_cif kilogramos_importaciones valor_fob kilogramos_exportaciones
Afganistan 0806200000 2018 6 6448.43 1463.92 0 0
Afganistan 6104220000 2018 10 3153.37 2407.61 0 0
Afganistan 6104620000 2018 10 946.01 722.28 0 0
Afganistan 6105100000 2018 10 9405.39 7181.03 0 0
Afganistan 6106100000 2018 10 1353.32 1725.55 0 0
Afganistan 6405900000 2018 10 2260.03 1725.55 0 0
Afganistan 8206000000 2018 10 6.56 5.02 0 0
Afganistan 6404110000 2019 2 7752.13 6748.03 0 0
Afganistan 6405100000 2019 2 508.03 442.24 0 0
Afganistan 6405900000 2019 2 12.45 10.85 0 0
* Elaboración propia con base en datos del BCR

Ejercicio 3

Agregue la información estandarizada de los países (nombres iso de los países y regiones, etc, tal como se vio en clases). Muestre un head de 10 casos.

# Cargar base de datos de comercio exterior 
load("C:/Users/johan/OneDrive/Documentos/A/MAE118/data_comercio_exterior_2018_2023.Rdata")


# Carga de datos de la información estandarizada de los países

library(readxl)
nombres_paises_iso <- read_excel("C:/Users/johan/OneDrive/Documentos/A/MAE118/nombres_paises_iso.xlsx")

# Unión de ambas bases de datos 

data_comercio_exterior_2018_2023 %>%
  left_join(nombres_paises_iso,
            by = c("pais" = "nom_pais_esp")) ->
  info_estandar_CE_2018_2023

# Guardar antes de personalizar 
save(info_estandar_CE_2018_2023, file = "C:/Users/johan/OneDrive/Documentos/A/MAE118/info_estandar_CE_2018_2023.Rdata")

# Mostrar tabla con head 10 casos 
info_estandar_CE_2018_2023 %>% head(10) %>%
  kable(caption = "Base de Comercio Exterior 2018-2023 estandarizada",
        align = "c") %>%
  add_footnote(label = "Elaboración propia con base en datos del BCR", notation = "symbol") %>%  kable_styling()
Base de Comercio Exterior 2018-2023 estandarizada
pais sac anio mes valor_cif kilogramos_importaciones valor_fob kilogramos_exportaciones nom_pais_ingles iso_2 iso_3 codigo_pais…5 codigo_pais…6 region cod_region sub_region cod_sub_region region_intermedia cod_region_intermedia …13
Afganistan 0806200000 2018 6 6448.43 1463.92 0 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 6104220000 2018 10 3153.37 2407.61 0 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 6104620000 2018 10 946.01 722.28 0 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 6105100000 2018 10 9405.39 7181.03 0 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 6106100000 2018 10 1353.32 1725.55 0 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 6405900000 2018 10 2260.03 1725.55 0 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 8206000000 2018 10 6.56 5.02 0 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 6404110000 2019 2 7752.13 6748.03 0 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 6405100000 2019 2 508.03 442.24 0 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 6405900000 2019 2 12.45 10.85 0 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
* Elaboración propia con base en datos del BCR

Ejercicio 4

Obtenga un ranking, anual, de los 5 principales socios comerciales de El Salvador, para el periodo 2018-2022. Presente sus resultados en el siguiente formato:

# Selección de años (filtro)

anios_ranking<-2018:2022
info_estandar_CE_2018_2023 %>% 
  filter(anio %in% anios_ranking) -> data_ranking

# Cálculo del 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  2018 USA|44.07    1
## 2  2018 HND|15.34    2
## 3  2018 GTM|14.36    3
## 4  2018  NIC|6.87    4
## 5  2018  CRI|4.39    5
## 6  2019 USA|42.04    1
## 7  2019 GTM|15.92    2
## 8  2019  HND|15.9    3
## 9  2019  NIC|6.66    4
## 10 2019  CRI|4.46    5
## 11 2020 USA|40.65    1
## 12 2020 GTM|16.42    2
## 13 2020 HND|15.56    3
## 14 2020   NIC|7.1    4
## 15 2020  CRI|4.49    5
## 16 2021 USA|40.52    1
## 17 2021 GTM|16.78    2
## 18 2021 HND|16.49    3
## 19 2021   NIC|7.2    4
## 20 2021  CRI|4.11    5
## 21 2022 USA|38.78    1
## 22 2022 GTM|17.05    2
## 23 2022 HND|16.65    3
## 24 2022  NIC|6.98    4
## 25 2022  CRI|4.27    5
# slice_max: Para cada año, selecciona las 5 filas con los valores más altos en la columna total
# as.data.frame se utiliza para convertir todo lo anterior en un df con el fin de volver a agrupar otra vez

# La función paste() se utiliza para combinar elementos de texto en una sola cadena. En este caso,  se utiliza para unir un código de país (iso_3), el carácter "|" y un valor de porcentaje (percent) en una cadena de texto con el formato "iso_3 | percent". Esto facilita la presentación de estos datos en un formato específico para su posterior análisis o visualización. En esencia, paste() concatena texto y caracteres en una única cadena de caracteres.

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  2018 USA|44.07 HND|15.34 GTM|14.36 NIC|6.87 CRI|4.39
## 2  2019 USA|42.04 GTM|15.92 HND|15.9  NIC|6.66 CRI|4.46
## 3  2020 USA|40.65 GTM|16.42 HND|15.56 NIC|7.1  CRI|4.49
## 4  2021 USA|40.52 GTM|16.78 HND|16.49 NIC|7.2  CRI|4.11
## 5  2022 USA|38.78 GTM|17.05 HND|16.65 NIC|6.98 CRI|4.27

Tabla en Formato Requerido

library(kableExtra)
mi_tabla %>%
  kable(caption = paste("Top",5,"Socios comerciales.",
    min(anios_ranking),"-",max(anios_ranking))) %>%
  add_footnote(label = "Elaboración propia con base en datos del BCR") 
Top 5 Socios comerciales. 2018 - 2022
anio 1 2 3 4 5
2018 USA|44.07 HND|15.34 GTM|14.36 NIC|6.87 CRI|4.39
2019 USA|42.04 GTM|15.92 HND|15.9 NIC|6.66 CRI|4.46
2020 USA|40.65 GTM|16.42 HND|15.56 NIC|7.1 CRI|4.49
2021 USA|40.52 GTM|16.78 HND|16.49 NIC|7.2 CRI|4.11
2022 USA|38.78 GTM|17.05 HND|16.65 NIC|6.98 CRI|4.27
a Elaboración propia con base en datos del BCR