UNIVERSIDAD DE EL SALVADOR

FACULTAD DE CIENCIAS ECONÓMICAS

ESCUELA DE ECONOMÍA

MÉTODOS PARA EL ANÁLISIS ECONÓMICO


LABORATORIO 1. SEGUNDA PARTE


DOCENTE:

MSF. CARLOS ADEMIR PÉREZ ALAS.

INTEGRANTES:

ABARCA ESPINOZA, FABIO FELICIANO.      AE17013.

IRAHETA VILLEGAS, JUAN PABLO.       IV14001.

QUINTANILLA COTO, JEFFERSON ANGELO.     QC18007.

GRUPO TEORICO:

3

CIUDAD UNIVERSITARIA, VIERNES 10 DE SEPTIEMBRE DE 2021.

1. Uso de librería “dplyr”

Uso de “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”.

#Cargamos el dataframe comercio exterior
load("C:\\Users\\Emerson\\Desktop\\comercio\\data_comercio_exterior_actualizada.RData")

#Cargamos paquetes
library(dplyr)
library(kableExtra)

#Seleccione las columnas de dicha base de datos 
data_comercio_exterior %>%
  select("pais","sac","anio", "mes", "valor_cif")%>%
  head() %>% kable(caption = "BASE DE DATOS") %>% kable_minimal()
BASE DE DATOS
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

Uso de “Filter”

Ejemplo 1:

Seleccione todas las transacciones de exportación del año 2021, con Canada o Mexico, que sean superiores a los 100,000 US$

library(dplyr)
data_comercio_exterior %>%
  select("pais","sac","anio", "mes", "valor_fob")  %>%
  filter(anio=="2021", pais  %in% c("Mexico", "Canada"), valor_fob > 100000)
## # A tibble: 348 x 5
##    pais   sac         anio   mes valor_fob
##    <chr>  <chr>      <dbl> <dbl>     <dbl>
##  1 Canada 0602100000  2021     1   564056.
##  2 Canada 0602100000  2021     1   564056.
##  3 Canada 0901113000  2021     1   172689 
##  4 Canada 0901113000  2021     1   172689 
##  5 Canada 6107110000  2021     1   106657.
##  6 Canada 6107110000  2021     1   106657.
##  7 Canada 6109100000  2021     1   372421.
##  8 Canada 6109100000  2021     1   372421.
##  9 Canada 6110300000  2021     1   263420.
## 10 Canada 6110300000  2021     1   263420.
## # ... with 338 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 Alemania.

data_comercio_exterior %>% 
  filter(pais=="Alemania",mes %in% 10:12)
## # A tibble: 7,126 x 8
##    pais  sac    anio   mes valor_cif kilogramos_impo~ valor_fob kilogramos_expo~
##    <chr> <chr> <dbl> <dbl>     <dbl>            <dbl>     <dbl>            <dbl>
##  1 Alem~ 0106~  2018    10      0                0         2900              55 
##  2 Alem~ 0409~  2018    10      0                0        40800           21636.
##  3 Alem~ 0602~  2018    10  28993.              62            0               0 
##  4 Alem~ 1105~  2018    10  19257.           15500            0               0 
##  5 Alem~ 1108~  2018    10      4.37             1.22         0               0 
##  6 Alem~ 1108~  2018    10  14780.           17960            0               0 
##  7 Alem~ 1109~  2018    10  56648.           24288            0               0 
##  8 Alem~ 1210~  2018    10   4658.             176            0               0 
##  9 Alem~ 1301~  2018    10      0                0        33990            1175 
## 10 Alem~ 1302~  2018    10   6212.             140.           0               0 
## # ... with 7,116 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 Guatemala, Honduras y Argentina.

library(purrr)
`%not_in%` <- purrr::negate(`%in%`)
data_comercio_exterior %>%
  filter(mes %in% 10:12,
         pais %not_in% c("Guatemala", "Honduras", "Argentina", "Afganistan"))
## # A tibble: 171,502 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 171,492 more rows

Uso de “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: 1,062,956 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 1,062,946 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_fob/(valor_cif+valor_fob)*100,2)) %>%
  select("pais","sac","anio", "mes","Xpt", "Mpt")%>% filter(Xpt>0)
## # A tibble: 247,418 x 6
##    pais       sac         anio   mes   Xpt   Mpt
##    <chr>      <chr>      <dbl> <dbl> <dbl> <dbl>
##  1 Afganistan 3004909100  2019     9   100   100
##  2 Afganistan 7009920000  2021     5   100   100
##  3 Afganistan 7009920000  2021     5   100   100
##  4 Afganistan 8302419000  2021     5   100   100
##  5 Afganistan 8302419000  2021     5   100   100
##  6 Afganistan 8306290000  2021     5   100   100
##  7 Afganistan 8306290000  2021     5   100   100
##  8 Afganistan 9401710000  2021     5   100   100
##  9 Afganistan 9401710000  2021     5   100   100
## 10 Afganistan 9403200000  2021     5   100   100
## # ... with 247,408 more rows

Uso de “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: 247,418 x 6
##    pais     sac         anio   mes    Xpt    Mpt
##    <chr>    <chr>      <dbl> <dbl>  <dbl>  <dbl>
##  1 Alemania 0409000000  2021     7 100      0   
##  2 Alemania 0409000000  2021     7 100      0   
##  3 Alemania 0901113000  2021     7 100      0   
##  4 Alemania 0901113000  2021     7 100      0   
##  5 Alemania 1604149000  2021     7 100      0   
##  6 Alemania 1604149000  2021     7 100      0   
##  7 Alemania 3808930000  2021     7  99.8    0.22
##  8 Alemania 3808930000  2021     7  99.8    0.22
##  9 Alemania 3919101000  2021     7   0.02 100.  
## 10 Alemania 3919101000  2021     7   0.02 100.  
## # ... with 247,408 more rows

Uso de “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                        7693.                       16709.

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                75747.                    0 
##  5 Albania     2018                    0                 18307.
##  6 Albania     2019                51392.                25660.
##  7 Albania     2020                    0                368298.
##  8 Albania     2021                    0                 54221.
##  9 Alemania    2018             20425283.            181276789.
## 10 Alemania    2019             21447921.            168946137.
## # ... with 798 more rows

2. Funciones

source(file ="C:\\Users\\Emerson\\Desktop\\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\Emerson\Desktop\comercio\data_comercio_exterior_actualizada.RData”)

nombre_archivo <- “C:\Users\Emerson\Desktop\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]

Herramienta de consulta de paises

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

Herramienta consulta de regiones

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

Herramienta 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 12
Albania 2018 27
Albania 2019 46

Uso de Indicador de Ventaja Comparativa Revelada

#Analizar el IVCR de Honduras
Resultados_IVCR <-data.frame("años" =2018:2021,"IVCR"=sapply(X=2018:2021,
                             FUN = indicadores_IVCR_capitulo,codigo_pais=504,capitulo="02"))
Resultados_IVCR  %>% kable(align = "l")  %>%
  kable_material(html_font = "sans-serif")
años IVCR
2018 0
2019 0
2020 0
2021 0
#IVCR de Honduras, para el periodo 2018-2021, para el producto "010"
Resultados_IVCR <-data.frame("años" =2018:2021,"IVCR"=sapply(X=2018:2021,
                             FUN = indicadores_IVCR_partida,codigo_pais=504,partida="010"))
Resultados_IVCR  %>% kable(align = "l")  %>%
  kable_material(html_font = "sans-serif")
años IVCR
2018 -0.9549206
2019 -0.9869897
2020 -0.9940680
2021 -0.9599851

Indicador de Balassa

#Cacularemos el Indice de Balassa de Honduras, para el periodo 2018-2021
Resultados_Balassa<-data.frame("años"=2018:2021,
                            "IB"=sapply(X=2018:2021,
                                        FUN = indicadores_Balassa_capitulo,codigo_pais=504,capitulo="02"))
Resultados_Balassa %>% kable(align = "l") %>% 
  kable_material(html_font = "sans-serif")
años IB
2018 -1
2019 -1
2020 -1
2021 -1

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=504,normalizado=TRUE))
Resultados_IHH %>% kable(align = "l",digits = 6) %>% 
  kable_material(html_font = "sans-serif")
años IHH
2018 0.730686
2019 0.095250
2020 0.002806
2021 0.003960

3. Función personalizada para Ranking Anual

ranking_socios_comerciales <- function(anios_ranking, k, digits = 0){
   data_comercio_exterior %>% 
  filter(anio %in% anios_ranking) %>% 
    group_by(anio, iso_3) %>%
    summarise(total = sum(valor_fob)) %>%
    mutate(percent = round(prop.table(total) * 100, digits)) %>%
    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() %>% 
  tidyr::pivot_wider(names_from = rank,values_from = data) %>%
  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(bootstrap_options = Form.Basic)
}
Form.Basic <- c("striped", "bordered", "hover", "condensed", "responsive")
ranking_socios_comerciales(anios_ranking = 2018:2021, k = 6, digits = 2)
Top 6 de Exportaciones periodo 2018 - 2021
anio 1 2 3 4 5 6
2018 USA | 44.07 % HND | 15.34 % GTM | 14.36 % NIC | 6.87 % CRI | 4.39 % MEX | 2.44 %
2019 USA | 42.03 % GTM | 15.92 % HND | 15.9 % NIC | 6.66 % CRI | 4.46 % MEX | 2.54 %
2020 USA | 39.18 % GTM | 16.89 % HND | 15.44 % NIC | 7.26 % CRI | 4.65 % MEX | 2.46 %
2021 USA | 40.59 % GTM | 16.98 % HND | 15.82 % NIC | 6.99 % CRI | 4.04 % MEX | 2.15 %
a Elaboración propia con base en datos del BCR