#Grupo de trabajo, Santiago de Jesús García Vásquez,GV13044, Marco Antonio Aguilera Calles AC13023, Jessica Lissette Gámez Cuellar GC13028

options (scipen = 999) 
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(readxl)
load("C:/Users/lisse/Desktop/Comercio exterior/data_comercio_exterior_actualizada.RData")
nombre_archivo <- "C:/Users/lisse/Desktop/Comercio exterior/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
  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)

#Select jemplo 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”.

library(dplyr)
library(kableExtra)
## 
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
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
NA NA NA 0
NA NA NA 0
NA NA NA 0
delim = " NA NA NA 0
delim = " NA NA NA 0
delim = " NA NA NA 0

#Filter Ejemplo 1: Seleccione todas las transacciones de exportación del año 2020, con Canada o Nicaragua, que sean superiores a los 200,000 US$

library(dplyr)
data_comercio_exterior %>%
  select("pais", "sac","anio","mes","valor_fob") %>%
  filter(anio=="2020", pais %in% c("Canada","Nicaragua"),valor_fob>200000)
## # A tibble: 1,227 x 5
##    pais   sac         anio   mes valor_fob
##    <chr>  <chr>      <dbl> <dbl>     <dbl>
##  1 Canada 0602100000  2020     1   818698.
##  2 Canada 0602100000  2020     1   818698.
##  3 Canada 0602100000  2020     1   818698.
##  4 Canada 6103430000  2020     1   514207.
##  5 Canada 6103430000  2020     1   514207.
##  6 Canada 6103430000  2020     1   514207.
##  7 Canada 6109100000  2020     1   324587.
##  8 Canada 6109100000  2020     1   324587.
##  9 Canada 6109100000  2020     1   324587.
## 10 Canada 6110300000  2020     1   260173.
## # ... with 1,217 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 Guatemala.

data_comercio_exterior %>% 
  filter(pais=="Guatemala",mes %in% 08:12) # 10:12 genera el vector c(08,09,10,11,12)
## # A tibble: 55,676 x 18
##    pais      sac         anio   mes valor_cif kilogramos_impo~ valor_fob kilogramos_expo~
##    <chr>     <chr>      <dbl> <dbl>     <dbl>            <dbl>     <dbl>            <dbl>
##  1 Guatemala 0105110000  2018     8   221304.           23598.   380761            41550 
##  2 Guatemala 0105110000  2018     8        0                0    380761            41550 
##  3 Guatemala 0105110000  2018     8        0                0    380761            41550 
##  4 Guatemala 0202300000  2018     8   411624.           89989.        0                0 
##  5 Guatemala 0207120000  2018     8   324148.          190806.        0                0 
##  6 Guatemala 0207139100  2018     8     5220             2771.        0                0 
##  7 Guatemala 0207139200  2018     8        0                0      5871.            3022 
##  8 Guatemala 0207139200  2018     8        0                0      5871.            3022 
##  9 Guatemala 0207139200  2018     8        0                0      5871.            3022 
## 10 Guatemala 0207141000  2018     8    13300            32768.    75600            86553.
## # ... with 55,666 more rows, and 10 more variables: nom_pais_ingles <chr>,
## #   iso_2 <chr>, iso_3 <chr>, codigo_pais <dbl>, region <chr>,
## #   cod_region <dbl>, sub_region <chr>, cod_sub_region <dbl>,
## #   region_intermedia <chr>, cod_region_intermedia <dbl>

Ejemplo 3: Seleccione todas las transacciones, exportación e importación, para el primer trimestre de cada año disponible en el dataframe, y que excluyan el comercio con Guatemala, Alemania y Colombia.

library(purrr) 
`%not_in%` <- purrr::negate(`%in%`) 
data_comercio_exterior %>% 
  filter(mes %in% 01:03,
         pais %not_in% c("Guatemala","Alemania","Colombia"))
## # A tibble: 350,366 x 18
##    pais       sac         anio   mes valor_cif kilogramos_impo~ valor_fob kilogramos_expo~
##    <chr>      <chr>      <dbl> <dbl>     <dbl>            <dbl>     <dbl>            <dbl>
##  1 Afganistan 6404110000  2019     2    7752.           6748.           0                0
##  2 Afganistan 6405100000  2019     2     508.            442.           0                0
##  3 Afganistan 6405900000  2019     2      12.4            10.8          0                0
##  4 Afganistan 8414510000  2019     2    1263.           1099.           0                0
##  5 Afganistan 8509400000  2019     2      81.2            70.7          0                0
##  6 Afganistan 8516400000  2019     2     233.            203.           0                0
##  7 Afganistan 8523521000  2019     2      50.7             0.2          0                0
##  8 Albania    6403919000  2018     1     375.             12.3          0                0
##  9 Albania    6104690000  2018     2     109.              2.78         0                0
## 10 Albania    6104690000  2018     3      72.3             1.71         0                0
## # ... with 350,356 more rows, and 10 more variables: nom_pais_ingles <chr>,
## #   iso_2 <chr>, iso_3 <chr>, codigo_pais <dbl>, region <chr>,
## #   cod_region <dbl>, sub_region <chr>, cod_sub_region <dbl>,
## #   region_intermedia <chr>, cod_region_intermedia <dbl>

#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,423,918 x 5
##    pais                          sac    anio   mes saldo_bc
##    <chr>                         <chr> <dbl> <dbl>    <dbl>
##  1 "---"                         <NA>     NA    NA        0
##  2 "---"                         <NA>     NA    NA        0
##  3 "---"                         <NA>     NA    NA        0
##  4 "    delim = \""              <NA>     NA    NA        0
##  5 "    delim = \""              <NA>     NA    NA        0
##  6 "    delim = \""              <NA>     NA    NA        0
##  7 "```"                         <NA>     NA    NA        0
##  8 "```"                         <NA>     NA    NA        0
##  9 "```"                         <NA>     NA    NA        0
## 10 "```{r setup, include=FALSE}" <NA>     NA    NA        0
## # ... with 1,423,908 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 Importaciones.

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(Mpt>0)
## # A tibble: 897,518 x 6
##    pais       sac         anio   mes   Xpt   Mpt
##    <chr>      <chr>      <dbl> <dbl> <dbl> <dbl>
##  1 Afganistan 0806200000  2018     6     0   100
##  2 Afganistan 6104220000  2018    10     0   100
##  3 Afganistan 6104620000  2018    10     0   100
##  4 Afganistan 6105100000  2018    10     0   100
##  5 Afganistan 6106100000  2018    10     0   100
##  6 Afganistan 6405900000  2018    10     0   100
##  7 Afganistan 8206000000  2018    10     0   100
##  8 Afganistan 6404110000  2019     2     0   100
##  9 Afganistan 6405100000  2019     2     0   100
## 10 Afganistan 6405900000  2019     2     0   100
## # ... with 897,508 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(Mpt>0) %>%
  arrange(desc(anio),desc(mes))
## # A tibble: 897,518 x 6
##    pais     sac         anio   mes   Xpt   Mpt
##    <chr>    <chr>      <dbl> <dbl> <dbl> <dbl>
##  1 Albania  9801002000  2021     7     0   100
##  2 Albania  9801002000  2021     7     0   100
##  3 Alemania 0406400000  2021     7     0   100
##  4 Alemania 0406400000  2021     7     0   100
##  5 Alemania 0406909000  2021     7     0   100
##  6 Alemania 0406909000  2021     7     0   100
##  7 Alemania 0602100000  2021     7     0   100
##  8 Alemania 0602100000  2021     7     0   100
##  9 Alemania 1105201000  2021     7     0   100
## 10 Alemania 1105201000  2021     7     0   100
## # ... with 897,508 more rows

#Summarise group_by(variable 1, variable 2…) %>% summarise(resultado 1= función de agregación(variable),resultado 2= función de agregación(variable)

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: 5 x 3
##    anio `Total Exportaciones MM US$` `Total Importaciones MM US$`
##   <dbl>                        <dbl>                        <dbl>
## 1  2018                       17714.                       11830.
## 2  2019                       17830.                       12018.
## 3  2020                       15132.                       10327.
## 4  2021                        7693.                       16709.
## 5    NA                           0                            0

#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)
  )
## `summarise()` has grouped output by 'pais'. You can override using the `.groups` argument.
## # A tibble: 817 x 4
## # Groups:   pais [248]
##    pais                           anio `Total Exportaciones` `Total Importacion~
##    <chr>                         <dbl>                 <dbl>               <dbl>
##  1 "---"                            NA                    0                   0 
##  2 "    delim = \""                 NA                    0                   0 
##  3 "```"                            NA                    0                   0 
##  4 "```{r setup, include=FALSE}"    NA                    0                   0 
##  5 "```{r}"                         NA                    0                   0 
##  6 "Afganistan"                   2018                    0               23573.
##  7 "Afganistan"                   2019                 1146.              13114.
##  8 "Afganistan"                   2020                    0                5427.
##  9 "Afganistan"                   2021                75747.                  0 
## 10 "Albania"                      2018                    0               18307.
## # ... with 807 more rows

#2.Generé 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 resultados en el siguiente formato: Top K Socios comerciales, periodo año inicio – año final, datos en porcentaje de las exportaciones totales.

options (scipen = 999)
library(dplyr)
library(readxl)
anios_ranking <- 2018:2021
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 = 11, 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
## `summarise()` has grouped output by 'anio'. You can override using the `.groups` argument.
print(insumo_reporte)
##    anio      data rank
## 1  2018 USA|44.07    1
## 2  2018 HND|15.34    2
## 3  2018 GTM|14.36    3
## 4  2018  NIC|6.87    4
## 5  2018  CRI|4.39    5
## 6  2018  MEX|2.44    6
## 7  2018  PAN|2.08    7
## 8  2018  DOM|1.65    8
## 9  2018  CHN|1.45    9
## 10 2018  ESP|0.82   10
## 11 2018  ITA|0.55   11
## 12 2019 USA|41.88    1
## 13 2019 GTM|15.95    2
## 14 2019 HND|15.91    3
## 15 2019  NIC|6.68    4
## 16 2019   CRI|4.5    5
## 17 2019  MEX|2.53    6
## 18 2019  PAN|2.05    7
## 19 2019  DOM|1.77    8
## 20 2019  CAN|1.08    9
## 21 2019  CHN|0.87   10
## 22 2019  ESP|0.83   11
## 23 2020 USA|39.18    1
## 24 2020 GTM|16.89    2
## 25 2020 HND|15.44    3
## 26 2020  NIC|7.26    4
## 27 2020  CRI|4.65    5
## 28 2020  MEX|2.46    6
## 29 2020  PAN|1.89    7
## 30 2020  DOM|1.78    8
## 31 2020  CHN|1.54    9
## 32 2020  KOR|1.21   10
## 33 2020  DEU|0.72   11
## 34 2021 USA|40.59    1
## 35 2021 GTM|16.98    2
## 36 2021 HND|15.82    3
## 37 2021  NIC|6.99    4
## 38 2021  CRI|4.04    5
## 39 2021  MEX|2.15    6
## 40 2021  KOR|1.98    7
## 41 2021   PAN|1.9    8
## 42 2021   DOM|1.6    9
## 43 2021   DEU|0.9   10
## 44 2021  TWN|0.73   11

Tabla en formato “RAW”

library(tidyr)
insumo_reporte %>%
  pivot_wider(names_from = rank, values_from = data) -> mi_tabla
print(mi_tabla)
## # A tibble: 4 x 12
##    anio `1`       `2`    `3`    `4`    `5`   `6`   `7`   `8`   `9`   `10`  `11` 
##   <dbl> <chr>     <chr>  <chr>  <chr>  <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1  2018 USA|44.07 HND|1~ GTM|1~ NIC|6~ CRI|~ MEX|~ PAN|~ DOM|~ CHN|~ ESP|~ ITA|~
## 2  2019 USA|41.88 GTM|1~ HND|1~ NIC|6~ CRI|~ MEX|~ PAN|~ DOM|~ CAN|~ CHN|~ ESP|~
## 3  2020 USA|39.18 GTM|1~ HND|1~ NIC|7~ CRI|~ MEX|~ PAN|~ DOM|~ CHN|~ KOR|~ DEU|~
## 4  2021 USA|40.59 GTM|1~ HND|1~ NIC|6~ CRI|~ MEX|~ KOR|~ PAN|~ DOM|~ DEU|~ TWN|~

Tabla en Formato Requerido

library(kableExtra)
mi_tabla %>%
  kable(caption = paste("Top K", "de Exportaciones periodo",
                        min(2018), "-", max(2021))) %>%
  add_footnote(label = "Elaboración propia con base en datos del BCR", notation = "symbol")  %>%
  kable_material(html_font = "sans-serif") 
Top K de Exportaciones periodo 2018 - 2021
anio 1 2 3 4 5 6 7 8 9 10 11
2018 USA|44.07 HND|15.34 GTM|14.36 NIC|6.87 CRI|4.39 MEX|2.44 PAN|2.08 DOM|1.65 CHN|1.45 ESP|0.82 ITA|0.55
2019 USA|41.88 GTM|15.95 HND|15.91 NIC|6.68 CRI|4.5 MEX|2.53 PAN|2.05 DOM|1.77 CAN|1.08 CHN|0.87 ESP|0.83
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 CHN|1.54 KOR|1.21 DEU|0.72
2021 USA|40.59 GTM|16.98 HND|15.82 NIC|6.99 CRI|4.04 MEX|2.15 KOR|1.98 PAN|1.9 DOM|1.6 DEU|0.9 TWN|0.73
* Elaboración propia con base en datos del BCR