#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

library(readr)
importaciones_2018_1 <- read_delim("C:/Users/DELL/OneDrive/Escritorio/HTML/importaciones_2018_2020/importaciones_2018_1.csv", 
    "|")
## Rows: 106105 Columns: 6
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: "|"
## chr (3): pais, sac, mes
## dbl (3): anio, valor cif, kilogramos
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(importaciones_2018_1)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(readr)
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
setwd("C:/Users/DELL/OneDrive/Escritorio/HTML/importaciones_2018_2020/")
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)
# Archivos en un solo dataframe
importaciones_mensuales<-bind_rows(lista_importacion)
# Mostar tabla html
importaciones_mensuales %>% head(10) %>% kable(caption = "El Salvador: Base de Importaciones 2018-2020",
                                             align="c") %>% 
  add_footnote(label = "Elaboración propia con base de 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
Canada 0511100000 2018 3 17884.85 24.00
Canada 0706900000 2018 4 963.78 6500.00
Canada 0706900000 2018 6 116.45 1176.00
Canada 0709991000 2018 6 166.36 800.00
* Elaboración propia con base de datos del BCR
library(readr)
exportaciones_2018_1 <- read_delim("C:/Users/DELL/OneDrive/Escritorio/HTML/exportaciones_2018_2020/exportaciones_2018_1.csv", 
    delim = "|")
## Rows: 29973 Columns: 6
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: "|"
## chr (3): pais, sac, mes
## dbl (3): anio, valor fob, kilogramos
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
head(exportaciones_2018_1)

#EXPORTACIONES

library(readr)
library(dplyr)
library(kableExtra)
setwd("C:/Users/DELL/OneDrive/Escritorio/HTML/exportaciones_2018_2020/")

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
                          )
# Archivos en un solo dataframe
exportaciones_mensuales<-bind_rows(lista_exportacion)
# Mostar tabla html
exportaciones_mensuales %>% head(10) %>% kable(caption = "El Salvador: Base de Exportaciones 2018-2020",
                                             align="c") %>% 
  add_footnote(label = "Elaboración propia con base de 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.20 15.00
Canada 0106900000 2018 3 4237.10 14.00
Canada 0106900000 2018 4 3918.00 13.50
Canada 0106900000 2018 5 3155.40 10.00
Canada 0106900000 2018 6 3097.40 9.00
Canada 0305720000 2018 2 2702.30 280.00
Canada 0602100000 2018 1 475519.57 7504.03
Canada 0602100000 2018 2 400232.82 6216.29
Canada 0602100000 2018 3 158138.42 2464.76
Canada 0602100000 2018 4 30370.08 510.83
* Elaboración propia con base de datos del BCR

#BASE DE DATOS COMERCIO EXTERIOR

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


importaciones_mensuales %>% full_join(
  exportaciones_mensuales,
  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, sac, anio, mes)-> 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 de 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.00 0
Afganistan 0910200000 2019 10 1821.00 34.90 0.00 0
Afganistan 3004909100 2019 9 0.00 0.00 382.13 19
Afganistan 3924909000 2020 9 26.89 8.31 0.00 0
Afganistan 4202190000 2020 8 18.88 0.68 0.00 0
Afganistan 4202990000 2020 8 7.55 0.27 0.00 0
Afganistan 4901990000 2020 9 67.22 8.31 0.00 0
Afganistan 6103109000 2020 8 75.52 2.73 0.00 0
Afganistan 6104220000 2018 10 3153.37 2407.61 0.00 0
Afganistan 6104620000 2018 10 946.01 722.28 0.00 0
* Elaboración propia con base de datos del BCR

#EJERCICIO 2

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

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

# Importaciones

setwd("C:/Users/DELL/OneDrive/Escritorio/HTML/importaciones_2018_2023/")

archivos_importar_1<- list.files()
lista_importacion<-lapply(
  archivos_importar_1,
  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
  )
# Archivos en un solo dataframe
importaciones_mensuales_update<-bind_rows(lista_importacion)

# Exportaciones

setwd("C:/Users/DELL/OneDrive/Escritorio/HTML/exportaciones_2018_2023/")

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
)
# Archivos en un solo dataframe
exportaciones_mensuales_update<-bind_rows(lista_exportacion)

# Concatenar las tablas
importaciones_mensuales_update %>% full_join(
  exportaciones_mensuales_update,
  by= c("pais", "sac", "anio", "mes"),
  suffix= c("_importaciones", "_exportaciones")
)-> data_comercio_exterior_update

# Sustituir valores Nulos "N/A" y guardar
data_comercio_exterior_update %>% replace_na(
  list(
    valor_cif = 0,
    valor_fob = 0,
    kilogramos_importaciones = 0,
    kilogramos_exportaciones = 0
    )
) %>% 
  arrange(pais, sac, anio, mes)-> data_comercio_exterior_update

# Unir tabla de comercio exterior y su actualizacion
data_comercio_exterior %>% bind_rows(data_comercio_exterior_update) %>% arrange(pais, sac, anio, mes) ->
  data_comercio_exterior

# Guardar 
save(data_comercio_exterior, file= "C:/Users/DELL/OneDrive/Escritorio/HTML/actualizacion_de_comercio_exterior.RData")
       
#Mostrar tabla
data_comercio_exterior %>% filter(anio==2023, mes==08) %>% head(10) %>% 
  kable(caption = "Base de Comercio Exterior 2023 (Agosto)",
        aling="c") %>% 
  add_footnote(label = "Elaboracion propia con base de datos del BCR",
               notation = "symbol") %>% kable_styling()
Base de Comercio Exterior 2023 (Agosto)
pais sac anio mes valor_cif kilogramos_importaciones valor_fob kilogramos_exportaciones
Albania 6109900000 2023 8 77.80 1.22 0.0 0.00
Albania 8484200000 2023 8 165.15 2.60 0.0 0.00
Albania 8544300000 2023 8 849.34 2.09 0.0 0.00
Alemania 0402911000 2023 8 37202.00 19624.00 0.0 0.00
Alemania 0602100000 2023 8 1272.39 48.00 0.0 0.00
Alemania 0901113000 2023 8 0.00 0.00 350816.6 56657.36
Alemania 1105201000 2023 8 43882.78 15500.00 0.0 0.00
Alemania 1107100000 2023 8 996.65 630.00 0.0 0.00
Alemania 1108130000 2023 8 50912.16 38120.00 0.0 0.00
Alemania 1301909000 2023 8 0.00 0.00 92000.0 2195.00
* Elaboracion propia con base de 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/DELL/OneDrive/Escritorio/HTML/actualizacion_de_comercio_exterior.RData")


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

library(readxl)
nombres_paises_iso <- read_excel("C:/Users/DELL/OneDrive/Escritorio/HTML/master_paises_iso.xlsx")
## New names:
## • `codigo_pais` -> `codigo_pais...5`
## • `codigo_pais` -> `codigo_pais...6`
## • `` -> `...13`
# Unión de ambas bases de datos 

data_comercio_exterior_update %>%
  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/DELL/OneDrive/Escritorio/HTML/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 actualizada",
        aling="c") %>% 
  add_footnote(label = "Elaboracion propia",
               notation = "symbol") %>% kable_styling(.)
Base de Comercio Exterior actualizada
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.00 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 0910200000 2019 10 1821.00 34.90 0.00 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 3004909100 2019 9 0.00 0.00 382.13 19 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 3924909000 2020 9 26.89 8.31 0.00 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 4202190000 2020 8 18.88 0.68 0.00 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 4202990000 2020 8 7.55 0.27 0.00 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 4901990000 2020 9 67.22 8.31 0.00 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 5702310000 2022 6 913.74 22.02 0.00 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 5702502000 2022 6 566.35 11.36 0.00 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
Afganistan 6103109000 2020 8 75.52 2.73 0.00 0 Afghanistan AF AFG 4 Asia 142 Asia Meridional 34 NA NA Asia 142
* Elaboracion propia

#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: Top 5 Socios comerciales, periodo 2018-2023, datos en porcentaje de las exportaciones totales.

options (scipen = 999) #para mostrar todos los decimales :)
library(dplyr)
library(readxl)
#Datos
load("C:/Users/DELL/OneDrive/Escritorio/HTML/actualizacion_de_comercio_exterior.RData")

#Pegar nombres paises
nombre_archivo <- "C:/Users/DELL/OneDrive/Escritorio/HTML/master_paises_iso.xlsx"
nombres_iso_paises <- read_excel(nombre_archivo)
## New names:
## • `codigo_pais` -> `codigo_pais...5`
## • `codigo_pais` -> `codigo_pais...6`
## • `` -> `...13`
data_comercio_exterior %>%
  left_join(nombres_iso_paises,
            by = c("pais" = "nom_pais_esp")) -> data_comercio_exterior

#Seleccionar Años
anios_ranking<-2018:2022
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
## `summarise()` has grouped output by 'anio'. You can override using the
## `.groups` argument.
print(insumo_reporte)
##    anio      data rank
## 1  2018  NA|47.09    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  NA|44.41    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  NA|43.91    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  NA|43.83    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  NA|41.17    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
library(tidyr)
insumo_reporte %>% 
pivot_wider(names_from = rank,values_from = data)->tabla
print(tabla)
## # A tibble: 5 × 6
##    anio `1`      `2`       `3`       `4`      `5`     
##   <dbl> <chr>    <chr>     <chr>     <chr>    <chr>   
## 1  2018 NA|47.09 HND|15.34 GTM|14.36 NIC|6.87 CRI|4.39
## 2  2019 NA|44.41 GTM|15.92 HND|15.9  NIC|6.66 CRI|4.46
## 3  2020 NA|43.91 GTM|16.42 HND|15.56 NIC|7.1  CRI|4.49
## 4  2021 NA|43.83 GTM|16.78 HND|16.49 NIC|7.2  CRI|4.11
## 5  2022 NA|41.17 GTM|17.05 HND|16.65 NIC|6.98 CRI|4.27
library(kableExtra)
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 NA|47.09 HND|15.34 GTM|14.36 NIC|6.87 CRI|4.39
2019 NA|44.41 GTM|15.92 HND|15.9 NIC|6.66 CRI|4.46
2020 NA|43.91 GTM|16.42 HND|15.56 NIC|7.1 CRI|4.49
2021 NA|43.83 GTM|16.78 HND|16.49 NIC|7.2 CRI|4.11
2022 NA|41.17 GTM|17.05 HND|16.65 NIC|6.98 CRI|4.27
a Elaboración propia con base en datos del BCR
# 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)->mi_tabla
  print(mi_tabla)
}
#2. Tabla en formato requerido
tabla_top_k_pretty<-function(df_comercio,
                             top_k=5,
                             anios_ranking,
                             decimales=2,
                             pie_pagina="Elaboración 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)
}
tabla_top_k_raw(df_comercio = data_comercio_exterior,
                anios_ranking=2018:2023,
                top_k = 5,
                decimales = 1 )
## `summarise()` has grouped output by 'anio'. You can override using the
## `.groups` argument.
## # A tibble: 6 × 6
##     Año `1`     `2`      `3`      `4`     `5`    
##   <dbl> <chr>   <chr>    <chr>    <chr>   <chr>  
## 1  2018 NA|47.1 HND|15.3 GTM|14.4 NIC|6.9 CRI|4.4
## 2  2019 NA|44.4 GTM|15.9 HND|15.9 NIC|6.7 CRI|4.5
## 3  2020 NA|43.9 GTM|16.4 HND|15.6 NIC|7.1 CRI|4.5
## 4  2021 NA|43.8 GTM|16.8 HND|16.5 NIC|7.2 CRI|4.1
## 5  2022 NA|41.2 GTM|17.1 HND|16.7 NIC|7   CRI|4.3
## 6  2023 NA|38.5 GTM|17.9 HND|15.9 NIC|7.4 CRI|4.6
tabla_top_k_pretty(df_comercio = data_comercio_exterior,
                   anios_ranking =c(2018,2023),
                   top_k = 5,
                   decimales = 2,
                   pie_pagina = "texto" )
## `summarise()` has grouped output by 'anio'. You can override using the
## `.groups` argument.
Top 5 de Exportaciones periodo 2018 - 2023
Año 1 2 3 4 5
2018 NA|47.09 HND|15.34 GTM|14.36 NIC|6.87 CRI|4.39
2023 NA|38.49 GTM|17.93 HND|15.94 NIC|7.39 CRI|4.62
a texto