PARTE TEORICA

1. Explique las formas de acceder al elemento “j” de una lista A que esta en la posicion “i” de la lista B. nota: el elemento “j” de la lista A tiene la etiqueta “hijo” y dentro de la lista B, la lista A tiene la etiqueta “padre”.

## Primero llamamamos al objeto, en este caso la Lista B; luego,
## Llamamos al elemento "I" que es la lista A de la lista B
## Por ultimo llamamos al argumento J que tiene por etiqueta "hijo".

2. Explique ¿como se clasifican las estructuras de datos?

# Es una organizacion de objetos o variables que dependen de su dimensionalidas y segun sean homogeneos o herterogenos. Cuando decimos que son Homogenos nos referimos que los elementos son del mismo tipo en cambio los datos Heterogeneos son aquellos elementos de distinto tipo.

# Dentro de los datos homogenos se encuentran:
# Los vectores: estos se caracterizan por se unidimensional y se pueden clasificar en 4 tipos; logico, integracion, numerico y de caracter.
# Matrices y array es bidimensional, es decir que tienen filas y columnas, estos pueden ser, logicos, numericos y de caracter.

# Dentro de los datos heterogenos econtramos lo siguiente:
# Listas: son diferentes de los vectores debido a que sus elementos pueden ser de cualquier tipo, incluyendo nuevas listas.
# Data frames: Son usados para almacenar información en forma tabular y realizar análisis sobre la misma. Similar a las listas, los data frames pueden almacenar valores de distintos tipos, y al tener dos dimensiones comparten muchas de las propiedades de las matrices. Esto significa que los data frames tienen los atributos names (o colnames), rownames, ncol y nrow.

3. Represente graficamente la instruccion rigth_join(A,B), a traves de un diagrama de Venn y explique su significado practico.

library(eulerr)
## Warning: package 'eulerr' was built under R version 4.2.1
data <- c(A=75,
          B=75 ,
          "A&B"=25)
right_join<- euler(data)
plot(right_join)

# Esta instruccion devuelve todas las filas de la tabla o data frames de la derecha, y las filas coincidentes de la tabla de la izquierda.

PARTE PRACTICA

Ejercicio 1. Elabore una funcion que se llame totales_pais_anios, que use como argumentos el codigo de pais iso de tres caracteres, para elegir el socio comercial de El Salvador, y permita obtener las exportaciones e importaciones para un periodo especifico.

options(scipen=999)
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.1
## 
## 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(readxl)
## Warning: package 'readxl' was built under R version 4.2.1
library(tidyr)
library(kableExtra)
## Warning: package 'kableExtra' was built under R version 4.2.1
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(stringr)
## Warning: package 'stringr' was built under R version 4.2.1
# Carga de datos
load("C:/Users/MOLINA/OneDrive/Escritorio/ARCHIVOS DE R/Mónica Valeria Molina Martínez - data_parcial_1_2021.RData")

library(dplyr)
library(readxl)
library(stringr)

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

Elaboracion de Formula

library(dplyr)
totales_pais_anios <- function(codigo, periodo) {
  Exp_Imp_Total <- data_comercio_exterior %>%
    group_by(iso_3, anio) %>%
    summarise(Exp = sum(valor_fob) / 1e6,
              Imp = sum(valor_cif) / 1e6)
  
  Exp_Imp_Total %>% filter(iso_3 == codigo, anio %in% periodo)
}

Ejercicio 2. Usando la funcion creada en el ejercicio 1 y los comandos que sean necesarios, genere la siguiente tabla: (nota ratio es el cociente entre importaciones y exportaciones) PAN= Panama, BLZ=Belice.

tabla_PAN <- totales_pais_anios(codigo = "PAN", periodo = 2017:2020)
## `summarise()` has grouped output by 'iso_3'. You can override using the
## `.groups` argument.
colnames(tabla_PAN) <- c("codigo","anio", "Exp_PAN", "Imp_PAN")
tabla_PAN %>% mutate(Ratio_PAN=Imp_PAN/Exp_PAN)->tabla_PAN

tabla_BLZ<-totales_pais_anios(codigo ="BLZ", 2017:2020)
## `summarise()` has grouped output by 'iso_3'. You can override using the
## `.groups` argument.
colnames(tabla_BLZ)<-c("codigo","anio", "Exp_BLZ", "Imp_BLZ")
tabla_BLZ %>% mutate(Ratio_BLZ=Imp_BLZ/Exp_BLZ)->tabla_BLZ

tabla_PAN %>% left_join(tabla_BLZ, by= c("anio"="anio"))  %>% 
select("anio","Exp_PAN", "Imp_PAN", "Ratio_PAN", 
         "Exp_BLZ", "Imp_BLZ", "Ratio_BLZ") -> tabla_final 
kable(tabla_final) %>% kable_styling()
anio Exp_PAN Imp_PAN Ratio_PAN Exp_BLZ Imp_BLZ Ratio_BLZ
2017 121.76437 76.39776 0.6274229 16.013380 3.9232741 0.2449998
2018 122.54869 62.61247 0.5109191 21.963732 0.6648215 0.0302691
2019 122.09840 74.36243 0.6090369 20.114436 0.4787941 0.0238035
2020 60.91833 40.13965 0.6589092 8.484919 0.2336319 0.0275350

Ejercicio 3. Obtenga los indicadores de Balassa, para el capitulo “01” usando las funciones provistas en clase.

#Carga de paquetes auxiliares
options (scipen = 999) #para mostrar todos los decimales :)
##### Cálculo de Indicadores ######
library(dplyr)
library(readxl)
library(stringr)
#Data para las funciones
load("C:/Users/MOLINA/OneDrive/Escritorio/ARCHIVOS DE R/Mónica Valeria Molina Martínez - data_parcial_1_2021.RData")
nombre_archivo<- nombres_iso_paises 
nombres_iso_paises <- 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())
}

#------------------------------------------------------------
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[,1]
}

#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[,1]
}
#------------------------------------------------------------
# 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))
}

Elaboracion de tabla.

library(dplyr)
library(kableExtra)
capitulo<-"01"
data_frame("anio"=2017:2020,
           "IB_PAN"=sapply(X=2017:2020,FUN = indicadores_Balassa_capitulo ,codigo_pais=591,capitulo=capitulo),
           "IB_BLZ"=sapply(X=2017:2020,FUN = indicadores_Balassa_capitulo,codigo_pais=84,capitulo=capitulo))%>%
  kable(caption = "Indicador de Balassa de El Salvador con: Panama y Belice, durante el periodo 2017-2020, para el capitulo “01” del SAC",
        digits = 2,align = "l")%>%
  kable_styling(bootstrap_options = "striped",
                full_width = TRUE)%>% 
  add_footnote(label="Elaboración propia con base en datos del BCR",
               notation="symbol") %>%  kable_minimal()
## Warning: `data_frame()` was deprecated in tibble 1.1.0.
## Please use `tibble()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
Indicador de Balassa de El Salvador con: Panama y Belice, durante el periodo 2017-2020, para el capitulo “01” del SAC
anio IB_PAN IB_BLZ
2017 -0.91 -1
2018 -0.73 -1
2019 -0.84 -1
2020 -1.00 -1
* Elaboración propia con base en datos del BCR

Ejericio 4. Ranking de los principales socios comerciales de EL Salvador. Top 5 para el periodo 2018-2020.

funcion_ranking<-function(anio_inicio,anio_final,ranking_k){ 
data_comercio_exterior %>% 
 filter(anio>=anio_inicio,anio<=anio_final) ->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 =ranking_k , order_by = total) %>%
      as.data.frame() %>%
      group_by(anio) %>%
      mutate(ranking = row_number(), 
      data = paste(iso_3, "|", percent, sep = ""))%>%
      select(anio, data, ranking) %>%
      as.data.frame() -> reporte_ranking

return(reporte_ranking)
}

# Generacion de Ranking
funcion_ranking(2018,2020,ranking_k = 5)%>%
     pivot_wider(names_from = ranking,values_from = data)->aplicar_formato_tabla
## `summarise()` has grouped output by 'anio'. You can override using the
## `.groups` argument.
      pie_pag<-"Elaboración propia con base en informacion del BCR,Elaboracion para el Parcial 1 MAE118 2022"
      aplicar_formato_tabla %>%
      kable(caption = paste("Top","5","Socios Comerciales     periodo",2018,2020))%>%
      add_footnote(label = pie_pag) %>% 
      kable_styling(bootstrap_options ="striped", full_width =TRUE)
Top 5 Socios Comerciales periodo 2018 2020
anio 1 2 3 4 5
2018 USA|44.07 HND|15.34 GTM|14.36 NIC|6.87 CRI|4.39
2019 USA|41.88 GTM|15.95 HND|15.91 NIC|6.68 CRI|4.5
2020 USA|36.8 GTM|16.92 HND|15.34 NIC|7.52 CRI|5.08
a Elaboración propia con base en informacion del BCR,Elaboracion para el Parcial 1 MAE118 2022