Creación de tabla de importaciones

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
library(data.table)
## 
## Attaching package: 'data.table'
## The following objects are masked from 'package:dplyr':
## 
##     between, first, last
setwd("/cloud/project/importaciones")
nombres_archivos_importar<-list.files()
lista_importacion<-lapply(nombres_archivos_importar,
                          FUN = read_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 %>% data.table()
##                            pais        sac anio mes valor_cif kilogramos
##      1: Groenlandia (Dinamarca) 2710199900 2017   2    317.40       8.16
##      2:                  Canada 0409000000 2017   3    673.18     836.10
##      3:                  Canada 0409000000 2017   4    171.17     600.00
##      4:                  Canada 0409000000 2017   5    330.09     660.00
##      5:                  Canada 0409000000 2017   6    149.46     437.50
##     ---                                                                 
## 846892:            Otros Paises 6403590000 2020   7    155.26       2.09
## 846893:            Otros Paises 6403590000 2020   8     90.51       2.18
## 846894:            Otros Paises 6403999000 2020   9    118.28       1.10
## 846895:            Otros Paises 8301700000 2020   7      5.75       0.14
## 846896:            Otros Paises 8523521000 2020   7     30.33       0.10
data_importaciones %>% head()%>% kable(caption="El Salvador: Base de Importaciones 2017-2020",
        align="c") %>% 
  add_footnote(label="Elaboración propia con base en datos del BCR",
               notation="symbol") %>%  kable_styling()
El Salvador: Base de Importaciones 2017-2020
pais sac anio mes valor_cif kilogramos
Groenlandia (Dinamarca) 2710199900 2017 2 317.40 8.16
Canada 0409000000 2017 3 673.18 836.10
Canada 0409000000 2017 4 171.17 600.00
Canada 0409000000 2017 5 330.09 660.00
Canada 0409000000 2017 6 149.46 437.50
Canada 0511100000 2017 3 18988.60 30.00
* Elaboración propia con base en datos del BCR

Creación de tabla de exportaciones

library(dplyr)
library(readr)
library(kableExtra)
library(data.table)
setwd("/cloud/project/exportaciones")
nombres_archivos_importar<-list.files()
lista_exportacion<-lapply(nombres_archivos_importar,
                          FUN = read_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)
## Warning: One or more parsing issues, see `problems()` for details
## One or more parsing issues, see `problems()` for details
data_exportaciones<-bind_rows(lista_importacion)

data_exportaciones %>% data.table()
##                            pais        sac anio mes valor_cif kilogramos
##      1: Groenlandia (Dinamarca) 2710199900 2017   2    317.40       8.16
##      2:                  Canada 0409000000 2017   3    673.18     836.10
##      3:                  Canada 0409000000 2017   4    171.17     600.00
##      4:                  Canada 0409000000 2017   5    330.09     660.00
##      5:                  Canada 0409000000 2017   6    149.46     437.50
##     ---                                                                 
## 846892:            Otros Paises 6403590000 2020   7    155.26       2.09
## 846893:            Otros Paises 6403590000 2020   8     90.51       2.18
## 846894:            Otros Paises 6403999000 2020   9    118.28       1.10
## 846895:            Otros Paises 8301700000 2020   7      5.75       0.14
## 846896:            Otros Paises 8523521000 2020   7     30.33       0.10
data_exportaciones %>% head()%>% kable(caption="El Salvador: Base de Exportaciones 2017-2020",
        align="c") %>% 
  add_footnote(label="Elaboración propia con base en datos del BCR",
               notation="symbol") %>%  kable_styling()
El Salvador: Base de Exportaciones 2017-2020
pais sac anio mes valor_cif kilogramos
Groenlandia (Dinamarca) 2710199900 2017 2 317.40 8.16
Canada 0409000000 2017 3 673.18 836.10
Canada 0409000000 2017 4 171.17 600.00
Canada 0409000000 2017 5 330.09 660.00
Canada 0409000000 2017 6 149.46 437.50
Canada 0511100000 2017 3 18988.60 30.00
* Elaboración propia con base en datos del BCR

Creación de tabla de comercio exterior

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

#Concatenar las tablas de data_importaciones & data_exportaciones
data_importaciones %>% full_join(
  data_exportaciones,
  by = c("pais", "sac", "anio", "mes"),
  suffix = c("_importaciones", "_exportaciones")
) -> data_comercio_exterior

#Sustitur los Valores Nulos "NA" y guardar en el mismo objeto
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 #Se hizo la asignación al final de la instrucción.

#Mostrar Tabla (primeros 6 elementos)
data_comercio_exterior %>% head() %>%
  kable(caption = "Base de Comercio Exterior 2017-2020",
        align = "c") %>%
  add_footnote(label = "Elaboración propia con base en datos del BCR",
               notation = "symbol") %>%  kable_styling()
Base de Comercio Exterior 2017-2020
pais sac anio mes valor_cif_importaciones kilogramos_importaciones valor_cif_exportaciones kilogramos_exportaciones
Afganistan 4010390000 2017 4 58.06 0.92 58.06 0.92
Afganistan 6812999090 2017 4 88.38 1.39 88.38 1.39
Afganistan 8487900000 2017 4 20.93 0.33 20.93 0.33
Afganistan 8511800000 2017 4 98.93 1.56 98.93 1.56
Afganistan 8708930000 2017 4 62.18 0.98 62.18 0.98
Afganistan 9028200000 2017 4 130.06 2.05 130.06 2.05
* Elaboración propia con base en datos del BCR

Guardar tabla de comercio exterior

save(data_comercio_exterior, file = "/cloud/project/data_comercio_exterior.RData")

#####Funciones para el cálculo de indicadores de comercio exterior. #Versión 2.0 #Desarrollo en R: # MSF. Carlos Ademir Pérez # Docente Facultad de Ciencias Económicas, # Universidad de El Salvador # Fuente de las fórmulas: # Durán Lima, José E. y Mariano Alvarez, # “Indicadores de comercio exterior y política comercial: # mediciones de posición y dinamismo comercial”, # CEPAL, 2008, disponible en: # https://repositorio.cepal.org/bitstream/handle/11362/3690/S2008794_es.pdf

options (scipen = 999)

##### Cálculo de Indicadores ######
library(dplyr)
library(readxl)
library(stringr)
#Data para las funciones
load("/cloud/project/data_comercio_exterior.RData")
nombre_archivo<-"/cloud/project/nombres_iso_paises.xlsx"
nombres_iso_paises <- read_excel(nombre_archivo)
data_comercio_exterior %>%
  left_join(nombres_iso_paises,
            by=c("pais"="nom_pais_esp"))-> data_comercio_exterior
#------------------------------------------------------------
#Función para mostrar los países
herramientas_mostrar_paises<-function(){
  nombres_iso_paises %>% 
    select(nom_pais_esp, 
           codigo_pais,
           region,
           cod_region,
           region_intermedia,
           cod_region_intermedia)->paises
  paises
}
#------------------------------------------------------------
#función para ver regiones
herramientas_mostrar_regiones<-function(){
  nombres_iso_paises %>% 
    group_by(region,
             cod_region,
             region_intermedia,
             cod_region_intermedia) %>% 
    summarise(`# de Paises incluidos`=n()) 
}
#------------------------------------------------------------
# países disponibles en la tabla de comercio_exterior
herramientas_mostrar_paises_en_tabla<-function(){
  data_comercio_exterior %>% group_by(pais,anio) %>%
    summarise(`# Transacciones`=n())
}
  

#------------------------------------------------------------
#Indice de Ventaja Comparativa Revelada | Capitulo | Anual 
indicadores_IVCR_capitulo<-function(codigo_pais,capitulo,anio){
enquo(codigo_pais)->codigo_pais
enquo(anio)->anio
data_comercio_exterior %>% filter(codigo_pais==!!codigo_pais) %>% 
  mutate(capitulo=str_sub(sac,start = 1,end = 2)) %>%
  filter(capitulo==!!capitulo,anio==!!anio) %>% 
  select(valor_cif,valor_fob) %>% 
  summarise(Xijt=sum(valor_fob),
            Mijt=sum(valor_cif)) %>% 
  mutate(dif=Xijt-Mijt) %>% 
  select(dif) ->numerador
####
data_comercio_exterior %>% 
  mutate(capitulo=str_sub(sac,start = 1,end = 2)) %>%
  filter(capitulo==!!capitulo,anio==!!anio) %>% 
  select(valor_cif,valor_fob) %>% 
  summarise(Xijt=sum(valor_fob),
            Mijt=sum(valor_cif)) %>% 
  mutate(suma=abs(Xijt+Mijt)) %>% 
  select(suma) ->denominador
as.vector(numerador/denominador)->resultado
resultado$dif
}
#------------------------------------------------------------
#Indice de Ventaja Comparativa Revelada | Partida | Anual 
indicadores_IVCR_partida<-function(codigo_pais,partida,anio){
  enquo(codigo_pais)->codigo_pais
  enquo(anio)->anio
  data_comercio_exterior %>% 
    filter(codigo_pais==!!codigo_pais,
           partida==!!partida,anio==!!anio) %>% 
    select(valor_cif,valor_fob) %>% 
    summarise(Xijt=sum(valor_fob),
              Mijt=sum(valor_cif)) %>% 
    mutate(dif=Xijt-Mijt) %>% 
    select(dif) ->numerador
  ####
  data_comercio_exterior %>% 
    filter(codigo_pais==!!codigo_pais,
           partida==!!partida,anio==!!anio) %>% 
    select(valor_cif,valor_fob) %>% 
    summarise(Xijt=sum(valor_fob),
              Mijt=sum(valor_cif)) %>% 
    mutate(suma=abs(Xijt+Mijt)) %>% 
    select(suma) ->denominador
  as.vector(numerador/denominador)->resultado
  resultado$dif
}
#------------------------------------------------------------
# Indice de Balassa | capitulo | anual
indicadores_Balassa_capitulo<-function(codigo_pais,
                                       capitulo,
                                       anio,
                                       normalizado=TRUE){
  enquo(codigo_pais)->codigo_pais
  enquo(anio)->anio
#  Exportaciones del producto k realizadas por el país i hacia el país j. 
  data_comercio_exterior %>% filter(codigo_pais==!!codigo_pais) %>% 
    mutate(capitulo=str_sub(sac,start = 1,end = 2)) %>%
    filter(capitulo==!!capitulo,anio==!!anio) %>% 
    select(valor_fob) %>% 
    summarise(Xijt=sum(valor_fob)) %>% 
    select(Xijt) ->a
# Exportaciones totales del país i al país j
data_comercio_exterior %>% 
  filter(codigo_pais==!!codigo_pais,
         anio==!!anio) %>% 
  select(valor_fob) %>% 
  summarise(Xijt=sum(valor_fob)) %>% 
  select(Xijt) ->b
# Exportaciones del capitulo k realizadas por el país i hacia el mundo (w) 
data_comercio_exterior %>%
  mutate(capitulo=str_sub(sac,start = 1,end = 2)) %>%
  filter(capitulo==!!capitulo,anio==!!anio) %>% 
  select(valor_fob) %>% 
  summarise(Xijt=sum(valor_fob)) %>% 
  select(Xijt) ->c
# Exportaciones totales del país i al mundo (w)
data_comercio_exterior %>%
  select(valor_fob) %>% 
  summarise(Xijt=sum(valor_fob)) %>% 
  select(Xijt) ->d

resultado<-as.numeric((a/b)/(c/d))
ifelse(normalizado==FALSE,
  return(resultado),
return((resultado-1)/(resultado+1)))
}
#------------------------------------------------------------
# Indice de Balassa | partida | anual
indicadores_Balassa_partida<-function(codigo_pais,
                                       partida,
                                       anio,
                                       normalizado=TRUE){
  enquo(codigo_pais)->codigo_pais
  enquo(anio)->anio
  #  Exportaciones del producto k realizadas por el país i hacia el país j. 
  data_comercio_exterior %>% filter(codigo_pais==!!codigo_pais) %>% 
    filter(partida==!!partida,anio==!!anio) %>% 
    select(valor_fob) %>% 
    summarise(Xijt=sum(valor_fob)) %>% 
    select(Xijt) ->a
  # Exportaciones totales del país i al país j
  data_comercio_exterior %>% 
    filter(codigo_pais==!!codigo_pais,
           anio==!!anio) %>% 
    select(valor_fob) %>% 
    summarise(Xijt=sum(valor_fob)) %>% 
    select(Xijt) ->b
  # Exportaciones del capitulo k realizadas por el país i hacia el mundo (w) 
  data_comercio_exterior %>%
    filter(partida==!!partida,anio==!!anio) %>% 
    select(valor_fob) %>% 
    summarise(Xijt=sum(valor_fob)) %>% 
    select(Xijt) ->c
  # Exportaciones totales del país i al mundo (w)
  data_comercio_exterior %>%
    select(valor_fob) %>% 
    summarise(Xijt=sum(valor_fob)) %>% 
    select(Xijt) ->d
  
  resultado<-as.numeric((a/b)/(c/d))
  ifelse(normalizado==FALSE,
         return(resultado),
         return((resultado-1)/(resultado+1)))
}
#------------------------------------------------------------
# Indice de Herfindahl Hirschmann como aparece en el Texto| anual
indicadores_IHH_Herfindahl_Hirschmann_anual_texto<-function(codigo_pais,
                                                      anio,
                                                      normalizado=TRUE){
  enquo(codigo_pais)->codigo_pais
  enquo(anio)->anio
  data_comercio_exterior %>% 
    filter(codigo_pais==!!codigo_pais,anio==!!anio) %>% 
    select(valor_fob) %>% filter(valor_fob>0)->Xij
  data_comercio_exterior %>% 
    filter(anio==!!anio) %>% 
    select(valor_fob) %>% summarise(total=sum(valor_fob)) %>%
    as.numeric()->XTi
  
  sum((Xij$valor_fob/XTi)^2)->suma_sqrt_ij
  length(Xij$valor_fob)->n
  ifelse(normalizado==TRUE,
  return(suma_sqrt_ij-1/n)/(1-1/n),
  return(suma_sqrt_ij))
}
#------------------------------------------------------------
# Indice de Herfindahl Hirschmann | anual
indicadores_IHH_Herfindahl_Hirschmann_anual<-function(codigo_pais,
                                                      anio,
                                                      normalizado=TRUE){
  enquo(codigo_pais)->codigo_pais
  enquo(anio)->anio
  data_comercio_exterior %>% 
    filter(codigo_pais==!!codigo_pais,anio==!!anio) %>% 
    select(valor_fob) %>% filter(valor_fob>0) %>% 
    select(valor_fob) %>% prop.table()->a
  sum(a^2)->sum_sqrt
  length(a$valor_fob)->n

   
  ifelse(normalizado==TRUE,
         return((sum_sqrt-1/n)/(1-1/n)),
         return(sum_sqrt))
}