Laboratorio 1. Segunda parte

INTEGRANTES:

APELLIDOS NOMBRES CARNET PARTICIPACIÓN
CRUZ RUIZ LINDA STEPHANIE CR19015 \(100\%\)
ESCAMILLA MORALES CARLOS JONATHAN EM15025 \(100\%\)
FLORES MELENDEZ JENNIFER SARAI FM19017 \(100\%\)

1. Reproduzca los ejemplos vistos en clase sobre el uso de la librería dplyr, usando la información actualizada recopilada en la tarea 1, y usando los nombres estandarizados que se han agregado para los países, utilice países diferentes a los que se emplearon en los ejemplos (queda a elección del grupo los paises)

Manejo de Dataframe a través dplyr

Select:

Ejemplo 1. Usando la base de datos de comercio exterior, para El Salvador, creada en la sesión anterior, seleccione las columnas de “pais”, “sac”,“anio”,“mes”,“valor_cif”.

#Carga del dataframe data_comercio_exterior
load("C:/Users/Laptopuser/Desktop/Metodos/data_comercio_exterior_actualizada.RData")

#Carga del paquete "dplyr"
library(dplyr)
library(kableExtra) 

data_comercio_exterior %>%
  select("pais", "sac","anio","mes","valor_cif") %>% 
  head() %>% kable(caption = "Ejemplo 1") %>% kable_minimal()
Ejemplo 1
pais sac anio mes valor_cif
Afganistan 0806200000 2018 6 6448.43
Afganistan 6104220000 2018 10 3153.37
Afganistan 6104620000 2018 10 946.01
Afganistan 6105100000 2018 10 9405.39
Afganistan 6106100000 2018 10 1353.32
Afganistan 6405900000 2018 10 2260.03

Filter:

Ejemplo 1. Seleccione todas las transacciones de exportación del año 2019, con Alemania o Nicaragua, que sean superiores a los 100,000 US$

library(dplyr)
data_comercio_exterior %>%
  select("pais", "sac","anio","mes","valor_fob") %>%
  filter(anio=="2019", pais %in% c("Alemania","Nicaragua"),valor_fob>100000)
## # A tibble: 794 x 5
##    pais     sac         anio   mes valor_fob
##    <chr>    <chr>      <dbl> <dbl>     <dbl>
##  1 Alemania 0901113000  2019     1   822262.
##  2 Alemania 0901113000  2019     2  1111335 
##  3 Alemania 0901113000  2019     3  1487258.
##  4 Alemania 0901113000  2019     4   406834.
##  5 Alemania 1604149000  2019     4   211470.
##  6 Alemania 6110300000  2019     4   146277.
##  7 Alemania 0409000000  2019     5   200520 
##  8 Alemania 0901113000  2019     5  1623407.
##  9 Alemania 1604149000  2019     5  1328210.
## 10 Alemania 6110300000  2019     5   121231.
## # ... with 784 more rows

Ejemplo 2. Seleccione todas las transacciones, exportación e importación, para el último trimestre de cada año disponible en el dataframe, que se han realizado con Brasil.

data_comercio_exterior %>% 
  filter(pais=="Brasil",mes %in% 10:12) 
## # A tibble: 4,585 x 8
##    pais  sac    anio   mes valor_cif kilogramos_impo~ valor_fob kilogramos_expo~
##    <chr> <chr> <dbl> <dbl>     <dbl>            <dbl>     <dbl>            <dbl>
##  1 Bras~ 0904~  2018    10     100.              1.5         0                 0
##  2 Bras~ 1108~  2018    10   59516          128960           0                 0
##  3 Bras~ 1209~  2018    10   23198.            115.          0                 0
##  4 Bras~ 1302~  2018    10     889.             85           0                 0
##  5 Bras~ 1504~  2018    10      57.8             3.4         0                 0
##  6 Bras~ 1604~  2018    10       0               0      140730.            50757
##  7 Bras~ 1704~  2018    10   29979.          20928.          0                 0
##  8 Bras~ 1806~  2018    10     184.             75.4         0                 0
##  9 Bras~ 1806~  2018    10     100.              4.24        0                 0
## 10 Bras~ 1806~  2018    10      88.7             4.26        0                 0
## # ... with 4,575 more rows

Ejemplo 3. Seleccione todas las transacciones, exportación e importación, para el último trimestre de cada año disponible en el dataframe, y que excluyan el comercio con Afganistan, Colombia y Estados Unidos.

library(purrr) 
`%not_in%` <- purrr::negate(`%in%`) 
data_comercio_exterior %>% 
  filter(mes %in% 10:12,
         pais %not_in% c("Afganistan","Colombia","Estados Unidos (U.S.A.)"))
## # A tibble: 167,794 x 8
##    pais  sac    anio   mes valor_cif kilogramos_impo~ valor_fob kilogramos_expo~
##    <chr> <chr> <dbl> <dbl>     <dbl>            <dbl>     <dbl>            <dbl>
##  1 Alba~ 6103~  2018    10     54.2              0.57         0                0
##  2 Alba~ 6104~  2018    10     33.0              0.9          0                0
##  3 Alba~ 6104~  2018    10    920.              23.7          0                0
##  4 Alba~ 7113~  2018    10     24.9              0.2          0                0
##  5 Alba~ 6104~  2018    11     39.8              0.25         0                0
##  6 Alba~ 6104~  2018    11    384.              10.9          0                0
##  7 Alba~ 6104~  2018    11    744.              18.3          0                0
##  8 Alba~ 7117~  2018    11     13.2              0.25         0                0
##  9 Alba~ 3917~  2018    12     22.2              0.2          0                0
## 10 Alba~ 3926~  2018    12      4.62             0.2          0                0
## # ... with 167,784 more rows

Mutate:

Ejemplo 1: calcule el saldo de la balanza comercial para todas las transacciones, disponibles en la base de comercio exterior.

data_comercio_exterior %>% 
  mutate(saldo_bc=valor_fob-valor_cif) %>% 
  select("pais","sac","anio","mes","saldo_bc")
## # A tibble: 906,981 x 5
##    pais       sac         anio   mes saldo_bc
##    <chr>      <chr>      <dbl> <dbl>    <dbl>
##  1 Afganistan 0806200000  2018     6 -6448.  
##  2 Afganistan 6104220000  2018    10 -3153.  
##  3 Afganistan 6104620000  2018    10  -946.  
##  4 Afganistan 6105100000  2018    10 -9405.  
##  5 Afganistan 6106100000  2018    10 -1353.  
##  6 Afganistan 6405900000  2018    10 -2260.  
##  7 Afganistan 8206000000  2018    10    -6.56
##  8 Afganistan 6404110000  2019     2 -7752.  
##  9 Afganistan 6405100000  2019     2  -508.  
## 10 Afganistan 6405900000  2019     2   -12.4 
## # ... with 906,971 more rows

Ejemplo 2. Calcule las exportaciones y las importaciones como porcentaje del comercio total, en cada transacción disponible en la base de comercio exterior, muestre sólo aquellas partidas que registren exportaciones.

options(scipen = 99999)
data_comercio_exterior %>% 
  mutate(Xpt=round(valor_fob/(valor_cif+valor_fob)*100,2),
         Mpt=round(valor_cif/(valor_cif+valor_fob)*100,2)) %>% 
  select("pais","sac","anio","mes","Xpt","Mpt") %>% filter(Xpt>0)
## # A tibble: 307,199 x 6
##    pais       sac         anio   mes   Xpt   Mpt
##    <chr>      <chr>      <dbl> <dbl> <dbl> <dbl>
##  1 Afganistan 3004909100  2019     9   100     0
##  2 Albania    1701140000  2019     2   100     0
##  3 Albania    3004909100  2021     1   100     0
##  4 Albania    3304990000  2021     3   100     0
##  5 Albania    4202990000  2021     3   100     0
##  6 Albania    6403999000  2021     3   100     0
##  7 Albania    6507000000  2021     4   100     0
##  8 Albania    8515110000  2021     4   100     0
##  9 Albania    8306210000  2021     5   100     0
## 10 Albania    6114200000  2021     6   100     0
## # ... with 307,189 more rows

Arrange:

Ejemplo. Ordenar los resultados del Ejemplo 2 de mutate, mostrando primero los resultados más recientes.

options(scipen = 99999)
data_comercio_exterior %>% 
  mutate(Xpt=round(valor_fob/(valor_cif+valor_fob)*100,2),
         Mpt=round(valor_cif/(valor_cif+valor_fob)*100,2)) %>% 
  select("pais","sac","anio","mes","Xpt","Mpt") %>% 
  filter(Xpt>0) %>%
  arrange(desc(anio),desc(mes))
## # A tibble: 307,199 x 6
##    pais     sac         anio   mes   Xpt   Mpt
##    <chr>    <chr>      <dbl> <dbl> <dbl> <dbl>
##  1 Albania  9801002000  2021     7   100     0
##  2 Alemania 0406400000  2021     7   100     0
##  3 Alemania 0406909000  2021     7   100     0
##  4 Alemania 0602100000  2021     7   100     0
##  5 Alemania 1105201000  2021     7   100     0
##  6 Alemania 1107100000  2021     7   100     0
##  7 Alemania 1107200000  2021     7   100     0
##  8 Alemania 1108130000  2021     7   100     0
##  9 Alemania 1302191000  2021     7   100     0
## 10 Alemania 1302200000  2021     7   100     0
## # ... with 307,189 more rows

Summarise:

Ejemplo 1. Obtenga los totales anuales de importaciones y exportaciones.

data_comercio_exterior %>% 
  group_by(anio) %>%
  summarise(`Total Exportaciones MM US$`=sum(valor_fob)/1e6,
            `Total Importaciones MM US$`=sum(valor_cif)/1e6)
## # A tibble: 4 x 3
##    anio `Total Exportaciones MM US$` `Total Importaciones MM US$`
##   <dbl>                        <dbl>                        <dbl>
## 1  2018                        5905.                       11464.
## 2  2019                        5905.                       11604.
## 3  2020                        5044.                       10327.
## 4  2021                        8355.                        3846.

Ejemplo 2. Obtenga los totales anuales de importaciones y exportaciones, que se realizan por país.

data_comercio_exterior %>% 
  group_by(pais,anio) %>%
  summarise(`Total Exportaciones`=sum(valor_fob),
            `Total Importaciones`=sum(valor_cif))
## # A tibble: 808 x 4
## # Groups:   pais [236]
##    pais        anio `Total Exportaciones` `Total Importaciones`
##    <chr>      <dbl>                 <dbl>                 <dbl>
##  1 Afganistan  2018                    0                 23573.
##  2 Afganistan  2019                  382.                13114.
##  3 Afganistan  2020                    0                  5427.
##  4 Afganistan  2021                    0                 37873.
##  5 Albania     2018                    0                 18307.
##  6 Albania     2019                51392.                25660.
##  7 Albania     2020                    0                368298.
##  8 Albania     2021                27111.                    0 
##  9 Alemania    2018             20425283.            181276789.
## 10 Alemania    2019             21447921.            168946137.
## # ... with 798 more rows

Otros ejemplos vistos en clase

Uso de funciones personalizadas para el cálculo de indicadores

library(dplyr)
library(readxl)
library(kableExtra)
load("C:/Users/Laptopuser/Desktop/Metodos/data_comercio_exterior_actualizada.RData")
nombres_iso_paises <- read_excel("C:/Users/Laptopuser/Desktop/Metodos/nombres_iso_paises.xlsx")

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

1. Cargar las funciones de comercio exterior

source(file = "C:/Users/Laptopuser/Desktop/Metodos/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/Laptopuser/Desktop/Metodos/data_comercio_exterior_actualizada.RData")
## 
## > nombre_archivo <- "C:/Users/Laptopuser/Desktop/Metodos/nombres_iso_paises.xlsx"
## 
## > nombres_iso_paises <- read_excel(nombre_archivo)
## 
## > 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]

2. Herramientas de Consulta de Países

library(kableExtra)
herramientas_mostrar_paises() %>% head() %>% kable() %>% kable_material(html_font = "sans-serif")
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

3. Herramientas de Consulta de Regiones

library(kableExtra)
herramientas_mostrar_regiones() %>% head() %>% kable() %>% kable_material(html_font = "sans-serif")
region cod_region region_intermedia cod_region_intermedia # de Paises incluidos
África 2 África Central 17 8
África 2 Africa Del Sur 18 5
África 2 África Occidental 11 16
África 2 África Oriental 14 17
África 2 NA NA 6
Américas 19 Caribe 29 26

4. Herramientas de Consulta de Paises con transacciones en la tabla

library(kableExtra)
herramientas_mostrar_paises_en_tabla() %>% head() %>% kable() %>% kable_material(html_font = "sans-serif")
pais anio # Transacciones
Afganistan 2018 7
Afganistan 2019 10
Afganistan 2020 29
Afganistan 2021 6
Albania 2018 27
Albania 2019 46

5. Uso de Indicador de Ventaja Comparativa Revelada

Ejemplo 1 En este ejemplo se analizará el IVCR con Alemania, para el período 2018-2021, para el capitúlo “01”

Resultados_IVCR<-data.frame("años"=2018:2021,
                            "IVCR"=sapply(X=2018:2021,FUN = indicadores_IVCR_capitulo,codigo_pais=276,capitulo="01"))
Resultados_IVCR %>% kable(align = "l") %>% 
  kable_material(html_font = "sans-serif")
años IVCR
2018 0.0028924
2019 0.0004806
2020 0.0006764
2021 -0.0008787

Ejemplo 2 En este ejemplo se analizará el IVCR con Alemania, para el periodo 2018-2021, para el producto “0105110000”.

Resultados_IVCR_sac<-data.frame("años"=2018:2021,
                            "IVCR"=sapply(X=2018:2021,FUN = indicadores_IVCR_partida,codigo_pais=276,partida="0105110000"))
Resultados_IVCR_sac %>% kable(align = "l") %>% 
  kable_material(html_font = "sans-serif")
años IVCR
2018 -0.7974708
2019 -0.7746997
2020 -0.6385520
2021 0.5195357

6. Uso de Indicador de Balassa

Ejemplo 1 En este ejemplo se analizará el indice de Balassa con Alemania, para el periodo 2018-2021, para al capitulo “01”.

Resultados_Balassa<-data.frame("años"=2018:2021,
                            "IB"=sapply(X=2018:2021,FUN = indicadores_Balassa_capitulo,codigo_pais=276,capitulo="01"))
Resultados_Balassa %>% kable(align = "l") %>% 
  kable_material(html_font = "sans-serif")
años IB
2018 0.7249814
2019 -0.0099380
2020 -0.0843122
2021 -1.0000000

Ejemplo 2 En este ejemplo se analizará el IB con Alemania, para el periodo 2018-2021, para el producto “0105110000”.

Resultados_IB_sac<-data.frame("años"=2018:2021,
                            "IB"=sapply(X=2018:2021,
                                          FUN = indicadores_Balassa_partida,
                                          codigo_pais=276,
                                          partida="0105110000",
                                          normalizado=TRUE))
Resultados_IB_sac %>% kable(align = "l") %>% 
  kable_material(html_font = "sans-serif")
años IB
2018 0.6204029
2019 0.6204384
2020 0.6665415
2021 0.5021612

7. Uso de Indicador de Herfindahl Hirschmann anual

Ambos ejemplos para Alemania para el período 2018-2021

Ejemplo 1: Uso de Indicador de Herfindahl Hirschmann anual

Resultados_IHH<-data.frame("años"=2018:2021,"IHH"=sapply(X = 2018:2021,
       FUN = indicadores_IHH_Herfindahl_Hirschmann_anual,codigo_pais=276,normalizado=TRUE))
Resultados_IHH %>% kable(align = "l",digits = 6) %>% 
  kable_material(html_font = "sans-serif")
años IHH
2018 0.042227
2019 0.038656
2020 0.045745
2021 0.006738

Ejemplo 2: Uso de Indicador de Herfindahl Hirschmann anual propuesto en el texto

Resultados_IHH_texto<-data.frame("años"=2018:2021,"IHH"=sapply(X = 2018:2021,
       FUN = indicadores_IHH_Herfindahl_Hirschmann_anual_texto,codigo_pais=276,normalizado=TRUE))
Resultados_IHH_texto %>% kable(align = "l",digits = 6) %>% 
  kable_material(html_font = "sans-serif")
años IHH
2018 -0.001779
2019 -0.001960
2020 -0.001661
2021 -0.000186

2. Genere una función personalizada que Obtenga un ranking, anual, de los “K” principales socios comerciales de El Salvador, para el periodo año inicio-año final. Presente sus resultadosen el siguiente formato: Top K Socios comerciales, periodo año inicio – año final, datos en porcentaje de las exportaciones totales.

library(dplyr)
library(tidyr)
library(kableExtra)
calculo_ranking <- function(Ao = 2018, Af=2021, K =8) {
    anios_ranking<- Ao:Af
    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 = 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() -> insumo_reporte
insumo_reporte%>%
  pivot_wider(names_from = rank, values_from = data)-> tabla
tabla%>% kable(caption = paste("Top",K,"de Exportaciones periodo",
    min(anios_ranking),"-",max(anios_ranking))) %>%
  add_footnote(label = "Elaboración propia con base en datos del BCR")%>%
  kable_styling()
  }

Ejecutando codigo

calculo_ranking()
Top 8 de Exportaciones periodo 2018 - 2021
anio 1 2 3 4 5 6 7 8
2018 USA | 44.07 % HND | 15.34 % GTM | 14.36 % NIC | 6.87 % CRI | 4.39 % MEX | 2.44 % PAN | 2.09 % DOM | 1.65 %
2019 USA | 42.03 % GTM | 15.92 % HND | 15.9 % NIC | 6.66 % CRI | 4.46 % MEX | 2.54 % PAN | 2.03 % DOM | 1.75 %
2020 USA | 39.18 % GTM | 16.89 % HND | 15.44 % NIC | 7.26 % CRI | 4.65 % MEX | 2.46 % PAN | 1.89 % DOM | 1.78 %
2021 USA | 27.16 % CHN | 16.46 % GTM | 10.86 % MEX | 8.18 % HND | 6.17 % NIC | 3.16 % CRI | 2.62 % KOR | 2.19 %
a Elaboración propia con base en datos del BCR