Primer Parcial Ordinario

Parte Teorica

Parte I 50%

1) [10%]Explique la forma de acceder al elemento “j” de una lista A que está en la posición “i” de una lista B.nota: el elemto “j” de la lista A tiene etiqueta “hijo” y dentro de la lista B, la lista A tiene la etiqueta “padre”

Para llamar a una pocicion de una determinada lista primero debemos saber como se llama nuestra lista y que pocicion vamos a llamar luego de eso vamos usar corchetes simples y corchetes dobles para este ejercicio seria de la siguiente forma.

B[[i]][[j]]

2) [20%] Explique ¿Cómo se clasifican las estructuras de datos en R?

La estructura de Datos en R se clasifican en dos tipos Heterogeneas y Homogeas

Las Homogeneas solo pueden contener un mismo tipo de datos Matriz Vector Array

Las Heterogeneas pueden contener cualquier tipo de datos en ellos se encuentran Las listas y los Data frame

Y estos se clasifican en character es cadena de texto logical Integer nos referimos a numeros enteros
NA es perdido Numeric nos referimos a numeros no enteros Factor Full es vacio

3) [20%] Represente gráficamente la instrucción right_join(A,B) a través de un diagrama de Venn y Explique su significado

library(eulerr)
data <- c(A=100,
          B=100,
          "A&B"=10)
venn <- euler(data)
plot(venn)

B%>%right_join(A) Esta conformado por todo lo de B y lo comuen entre A y B o una unión por la derecha

Parte II [50%]

Práctica Usando la base de datos de comercio Exterior proporcionada en clases, resulva lo siguientes ejercicios

Ejercicio 1 [10%]: Elabore una función que se llame totales_pais_anios, que use como argumento el código de país iso de tres caractares, para elegir el socio comercial de El salvador, y permita obtener las Exportaciones y las Importaciones para un periodo especifico.

Cargar la Data

load("~/Metodos/Diana_Carolina_Villatoro_Romero_data_parcial_1_2021.RData")
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(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
totales_pais_anios<-function(ISO="PAN",a=2017,b=2018){
  data_comercio_exterior %>% left_join(nombres_iso_paises, by = c("pais" = "nom_pais_esp")) -> data_comercio_exterior
  anio<-a:b
  data_comercio_exterior %>%filter(iso_3 %in% ISO) %>%  filter(anio %in% anio)->datos
  datos %>% group_by(anio)%>% summarise(Exportaciones=sum(valor_fob),Importaciones=sum(valor_cif))->reporte
  
  reporte
}

totales_pais_anios(ISO="USA",2017,2020)
## # A tibble: 4 × 3
##    anio Exportaciones Importaciones
##   <dbl>         <dbl>         <dbl>
## 1  2017   2564416169.   3352811366.
## 2  2018   2602213108.   3793431275.
## 3  2019   2488778643.   3649125145.
## 4  2020   1138242164.   1783499199.

Ejercicio 2 [10%]: 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= Panamá, BLZ=Belice.

consulta<-function(ISO1="PAN",ISO2="BLZ",a=2017,b=2020){
  periodo<-a:b
  totales_pais_anios(ISO1,a,b)->reporte1
  totales_pais_anios(ISO2,a,b)->reporte2
  
  reporte1 %>% mutate(ratio=Importaciones/Exportaciones)->reporte1
  reporte2 %>% mutate(ratio=Importaciones/Exportaciones)->reporte2
  reporte1 %>% left_join(reporte2,by="anio")->reporte
  
    colnames(reporte)<-c("anio",paste("Exportaciones_",ISO1),paste("Importaciones_",ISO1),paste("ratio_",ISO1),paste("Exportaciones_",ISO2),paste("Importaciones_",ISO2),paste("ratio_",ISO2))
  reporte %>%  kable(caption = paste("Exportaciones e Importaciones de", ISO1, "y",ISO2,"en el periodo", min(periodo),"-", max(periodo) )) %>% add_footnote(label = "Elaborado por VR18003 Parcial Ordinario", notation = "symbol") %>%  kable_styling()
}

consulta("PAN","BLZ",2017,2020)
Exportaciones e Importaciones de PAN y BLZ en el periodo 2017 - 2020
anio Exportaciones_ PAN Importaciones_ PAN ratio_ PAN Exportaciones_ BLZ Importaciones_ BLZ ratio_ BLZ
2017 121764374 76397756 0.6274229 16013380 3923274.1 0.2449998
2018 122548686 62612465 0.5109191 21963732 664821.5 0.0302691
2019 122098397 74362428 0.6090369 20114436 478794.1 0.0238035
2020 60918331 40139646 0.6589092 8484919 233631.9 0.0275350
* Elaborado por VR18003 Parcial Ordinario

Ejercicio 3 [10%]: Obtenga los Indicadores de Balassa, para el capitulo “01”, usando las funciones provistas en clases.

No me corre me da error en todo

Ejercico 4 [20%]: Genere una función 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 resultados en el siguiente formato:

Top K Socios comerciales, periodo año inicio-año final, datos en porcentaje de las exportaciones totales.

Carga de la data

library(readxl)
library(dplyr)
library(tidyr)
library(kableExtra)
#Data para las funciones
load("C:/Users/manuel/Documents/Metodos/Comercio/data_Comercio_Exterior.RData")
nombre_archivo<-"C:/Users/manuel/Documents/Metodos/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
options (scipen = 999)
library(dplyr)
library(readxl)
library(kableExtra)
nombre_archivo <-"C:/Users/manuel/Documents/Metodos/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

#Seleccionar Años
anios_ranking<-2018:2020
data_comercio_exterior %>% 
  filter(anio %in% anios_ranking) ->data_ranking
# 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= "Elaborado para el Parcial 1 MAE118 2022"){
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:2020,
                top_k = 5,
                decimales = 2 )
## `summarise()` has grouped output by 'anio'. You can override using the
## `.groups` argument.
## # A tibble: 3 × 6
##     Año `1`       `2`       `3`       `4`      `5`     
##   <dbl> <chr>     <chr>     <chr>     <chr>    <chr>   
## 1  2018 USA|44.07 HND|15.34 GTM|14.36 NIC|6.87 CRI|4.39
## 2  2019 USA|42.04 GTM|15.92 HND|15.9  NIC|6.66 CRI|4.46
## 3  2020 USA|39.25 GTM|16.87 HND|15.45 NIC|7.25 CRI|4.63