Tarea N° 5: Guía de trabajo sobre base de datos de Comercio Exterior

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.

Importaciones 2018-2020.

library(readr)
library(dplyr)
library(kableExtra) 
setwd("C:/Users/PC-GUEVARA/Desktop/metodos/Tarea 5/Importaciones")
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)
data_importaciones<-bind_rows(lista_importacion)
data_importaciones %>% 
  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

Exportaciones 2018-2020.

setwd("C:/Users/PC-GUEVARA/Desktop/metodos/Tarea 5/Exportaciones")
archivos_importar <- list.files()
lista_exportacion <- lapply(archivos_importar,
                            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)
data_exportaciones <- bind_rows(lista_exportacion)
data_exportaciones %>% 
  head() %>% 
  kable(caption = "Base de Exportaciones 2018-2020", 
        align = "c") %>%
  add_footnote(label = "Elaboración propia con base en datos del BCR",
               notation = "symbol") %>%  
  kable_styling()
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 2018-2020.

library(tidyr)
data_importaciones %>%
  full_join(
  data_exportaciones,
  by = c("pais", "sac", "anio", "mes"),
  suffix = c("_importaciones", "_exportaciones")
) -> data_comercio_exterior

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

data_comercio_exterior %>% 
  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()
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
save(data_comercio_exterior, file = "C:/Users/PC-GUEVARA/Desktop/metodos/Tarea 5/data_comercio_exterior_actualizada.RData")

Ejercicio 2.

Realice la actualización de la tabla anterior con toda la información disponible para 2023.
# Actualizacion de las importaciones a Agosto del 2023
setwd("C:/Users/PC-GUEVARA/Desktop/metodos/Tarea 5/Importaciones actualizadas")
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
)
data_importaciones_update <- bind_rows(lista_importacion)

# Actualizacion de las exportaciones a Agosto de 2023
setwd("C:/Users/PC-GUEVARA/Desktop/metodos/Tarea 5/Exportaciones actualizadas")
archivos_importar <- list.files()
lista_importacion <- lapply(
  archivos_importar,
  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
)
data_exportaciones_update <- bind_rows(lista_importacion)


# Tabla de Comercio Exterior 2018-2023 (Agosto).
data_importaciones_update %>% 
  full_join(
  data_exportaciones_update,
  by = c("pais", "sac", "anio", "mes"),
  suffix = c("_importaciones", "_exportaciones")
) -> data_comercio_exterior_update


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

data_comercio_exterior %>% bind_rows(data_comercio_exterior_update) %>%  
  arrange(pais, anio, mes, sac) -> data_comercio_exterior

save(data_comercio_exterior, file = "C:/Users/PC-GUEVARA/Desktop/metodos/Tarea 5/data_comercio_exterior_actualizada.RData")


data_comercio_exterior %>% 
 # filter(anio == 2023, mes == 08) %>% 
  head(10) %>%
  kable(caption = "Base de Comercio Exterior 2018-2023 (Agosto)",
        align = "c") %>%
  add_footnote(label = "Elaboración propia con base en datos del BCR",
               notation = "symbol") %>%  
  kable_styling()
Base de Comercio Exterior 2018-2023 (Agosto)
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.
options (scipen = 999) 
library(readxl)

Archivo <- "C:/Users/PC-GUEVARA/Desktop/metodos/Tarea 5/master_paises_iso.xlsx"
nombres_iso_paises <- read_excel(Archivo)


data_comercio_exterior %>% 
  left_join(nombres_iso_paises,
            by=c("pais"="nom_pais_esp"))-> data_comercio_exterior_estandarizada

save(data_comercio_exterior_estandarizada, file = "C:/Users/PC-GUEVARA/Desktop/metodos/Tarea 5/data_comercio_exterior_estandarizada.RData")

data_comercio_exterior_estandarizada %>% 
  head(10) %>%
  kable(caption = "Base de Comercio Exterior 2018-2023 (Agosto) 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 (Agosto) 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.

Seleccionar Años y Cálculo de ranking & porcentajes.

#Seleccion de Años
anios_ranking<-2018:2022
data_comercio_exterior_estandarizada %>% 
  filter(anio %in% anios_ranking) ->data_ranking

#Cálculo de ranking & porcentajes
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

Tabla en formato “RAW”.

library(tidyr)
insumo_reporte %>% 
pivot_wider(names_from = rank,values_from = data)->tabla_estandarizada
print(tabla_estandarizada)
## # 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)
tabla_estandarizada %>%
  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 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

Implementación de funciones personalizadas.

# 1. Tabla en formato RAW
tabla_top_k_raw<-function(df_comercio,top_k=5,anios_ranking,decimales=2
){
library(dplyr)
library(tidyr)
df_comercio %>% 
  filter(anio %in% anios_ranking) %>% 
  group_by(anio,iso_3) %>% 
  summarise(total=sum(valor_fob)) %>%           
  mutate(percent=round(prop.table(total)*100,decimales)) %>% 
  slice_max(n = top_k,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() %>% rename(`Año`=anio) %>%
  pivot_wider(names_from = rank,values_from = data)->tabla_estandarizada
  print(tabla_estandarizada)
}


#2. Tabla en formato requerido
tabla_top_k_pretty<-function(df_comercio,
                             top_k=5,
                             anios_ranking,
                             decimales=2,
                             pie_pagina= "Elaboración propia con base en datos del BCR"){
library(dplyr)
library(tidyr)
library(kableExtra)
df_comercio %>% 
  filter(anio %in% anios_ranking) %>% 
  group_by(anio,iso_3) %>% 
  summarise(total=sum(valor_fob)) %>%           
  mutate(percent=round(prop.table(total)*100,decimales)) %>% 
  slice_max(n = top_k,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() %>% rename(`Año`=anio) %>% 
  pivot_wider(names_from = rank,values_from = data) %>% as.data.frame() %>%   kable(caption = paste("Top",top_k,"de Exportaciones periodo",
    min(anios_ranking),"-",max(anios_ranking))) %>%
  add_footnote(label = pie_pagina)
}

Ejemplos de uso de las Funciones:

# 1. Tabla en formato RAW.

tabla_top_k_raw(df_comercio = data_comercio_exterior_estandarizada,
                anios_ranking =2018:2022,
                top_k = 5,
                decimales = 2 )
## # A tibble: 5 × 6
##     Año `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

2. Tabla en formato requerido.

tabla_top_k_pretty(df_comercio = data_comercio_exterior_estandarizada,
                   anios_ranking =c(2018,2019,2020,2021,2022),
                   top_k = 5,
                   decimales = 2,
                   pie_pagina = "Elaboración propia con base en datos del BCR" )
Top 5 de Exportaciones periodo 2018 - 2022
Año 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