https://rpubs.com/ca_ademir/dplyr_comercio

load("C:/Users/Eduardo/Downloads/BETO/Metodos 2020/importaciones_exportaciones/data_comercio_exterior_2.RData")

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 paquete "dplyr"
library(dplyr)
## Warning: package 'dplyr' was built under R version 3.6.3
## 
## 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) #Sólo es para formato de las tablas de estos apuntes
## Warning: package 'kableExtra' was built under R version 3.6.3
## 
## 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
Afganistan 4010390000 2017 4 58.06
Afganistan 6812999000 2017 4 88.38
Afganistan 8487900000 2017 4 20.93
Afganistan 8511800000 2017 4 98.93
Afganistan 8708930000 2017 4 62.18
Afganistan 9028200000 2017 4 130.06

filter

Ejemplo 1: Seleccione todas las transacciones de exportación del año 2019, con Honduras o Guatemala, que sean superiores a los 100,000 US$

library(dplyr)
data_comercio_exterior %>%
  select("pais", "sac","anio","mes","valor_fob") %>%
  filter(anio=="2019", pais %in% c("Guatemala","Honduras"),valor_fob>100000)
## # A tibble: 2,988 x 5
##    pais      sac         anio   mes valor_fob
##    <chr>     <chr>      <dbl> <dbl>     <dbl>
##  1 Guatemala 0105110000  2019     1   108886.
##  2 Guatemala 0202300000  2019     1   460468.
##  3 Guatemala 0207120000  2019     1   266657.
##  4 Guatemala 0603110000  2019     1   138516.
##  5 Guatemala 0701900000  2019     1  1861870.
##  6 Guatemala 0702000000  2019     1   484976.
##  7 Guatemala 0703101200  2019     1   258420.
##  8 Guatemala 0704100000  2019     1   301069.
##  9 Guatemala 0704900000  2019     1   709192.
## 10 Guatemala 0705110000  2019     1   305408.
## # ... with 2,978 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 México.

data_comercio_exterior %>% 
  filter(pais=="Mexico",mes %in% 10:12) # 10:12 genera el vector c(10,11,12)
## # A tibble: 12,576 x 8
##    pais  sac    anio   mes valor_cif kilogramos_impo~ valor_fob kilogramos_expo~
##    <chr> <chr> <dbl> <dbl>     <dbl>            <dbl>     <dbl>            <dbl>
##  1 Mexi~ 0402~  2017    10      331.             31.2      331.             31.2
##  2 Mexi~ 0403~  2017    10    51406.          41599.     51406.          41599. 
##  3 Mexi~ 0406~  2017    10    29547.           8375.     29547.           8375. 
##  4 Mexi~ 0406~  2017    10    38576.          17347.     38576.          17347. 
##  5 Mexi~ 0703~  2017    10    78626.         536662      78626.         536662  
##  6 Mexi~ 0703~  2017    10     4958.          45500       4958.          45500  
##  7 Mexi~ 0703~  2017    10      545.            100        545.            100  
##  8 Mexi~ 0704~  2017    10     4478.           3464       4478.           3464  
##  9 Mexi~ 0705~  2017    10    10591.          10527      10591.          10527  
## 10 Mexi~ 0705~  2017    10     3931.           3430       3931.           3430  
## # ... with 12,566 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 Canada, México y Estados Unidos.

library(purrr) #librería necesaria para la función personalizada `%not_in%`
## Warning: package 'purrr' was built under R version 3.6.3
`%not_in%` <- purrr::negate(`%in%`) #esta función permite excluir los elementos que se incluyan en un vector
data_comercio_exterior %>% 
  filter(mes %in% 10:12,
         pais %not_in% c("Canada","Mexico","Estados Unidos (U.S.A.)"))
## # A tibble: 129,481 x 8
##    pais  sac    anio   mes valor_cif kilogramos_impo~ valor_fob kilogramos_expo~
##    <chr> <chr> <dbl> <dbl>     <dbl>            <dbl>     <dbl>            <dbl>
##  1 Afga~ 6913~  2017    12    650.               5.49    650.               5.49
##  2 Afga~ 7326~  2017    12      2                0.01      2                0.01
##  3 Afga~ 6104~  2018    10   3153.            2408.     3153.            2408.  
##  4 Afga~ 6104~  2018    10    946.             722.      946.             722.  
##  5 Afga~ 6105~  2018    10   9405.            7181.     9405.            7181.  
##  6 Afga~ 6106~  2018    10   1353.            1726.     1353.            1726.  
##  7 Afga~ 6405~  2018    10   2260.            1726.     2260.            1726.  
##  8 Afga~ 8206~  2018    10      6.56             5.02      6.56             5.02
##  9 Afga~ 0910~  2019    10   1821               34.9    1821               34.9 
## 10 Alba~ 3926~  2017    10     37.5            105        37.5            105   
## # ... with 129,471 more rows

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: 769,937 x 5
##    pais       sac         anio   mes saldo_bc
##    <chr>      <chr>      <dbl> <dbl>    <dbl>
##  1 Afganistan 4010390000  2017     4        0
##  2 Afganistan 6812999000  2017     4        0
##  3 Afganistan 8487900000  2017     4        0
##  4 Afganistan 8511800000  2017     4        0
##  5 Afganistan 8708930000  2017     4        0
##  6 Afganistan 9028200000  2017     4        0
##  7 Afganistan 6913100000  2017    12        0
##  8 Afganistan 7326209000  2017    12        0
##  9 Afganistan 0806200000  2018     6        0
## 10 Afganistan 6104220000  2018    10        0
## # ... with 769,927 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_cif/(valor_cif+valor_fob)*100,2)) %>% 
  select("pais","sac","anio","mes","Xpt","Mpt") %>% filter(Xpt>0)
## # A tibble: 769,937 x 6
##    pais       sac         anio   mes   Xpt   Mpt
##    <chr>      <chr>      <dbl> <dbl> <dbl> <dbl>
##  1 Afganistan 4010390000  2017     4    50    50
##  2 Afganistan 6812999000  2017     4    50    50
##  3 Afganistan 8487900000  2017     4    50    50
##  4 Afganistan 8511800000  2017     4    50    50
##  5 Afganistan 8708930000  2017     4    50    50
##  6 Afganistan 9028200000  2017     4    50    50
##  7 Afganistan 6913100000  2017    12    50    50
##  8 Afganistan 7326209000  2017    12    50    50
##  9 Afganistan 0806200000  2018     6    50    50
## 10 Afganistan 6104220000  2018    10    50    50
## # ... with 769,927 more rows

orrange

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: 769,937 x 6
##    pais     sac         anio   mes   Xpt   Mpt
##    <chr>    <chr>      <dbl> <dbl> <dbl> <dbl>
##  1 Albania  2106907900  2020     7    50    50
##  2 Albania  3004909100  2020     7    50    50
##  3 Alemania 0402911000  2020     7    50    50
##  4 Alemania 0602100000  2020     7    50    50
##  5 Alemania 0602909000  2020     7    50    50
##  6 Alemania 1107100000  2020     7    50    50
##  7 Alemania 1107200000  2020     7    50    50
##  8 Alemania 1108130000  2020     7    50    50
##  9 Alemania 1109000000  2020     7    50    50
## 10 Alemania 1302191000  2020     7    50    50
## # ... with 769,927 more rows

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)
## `summarise()` ungrouping output (override with `.groups` argument)
## # A tibble: 4 x 3
##    anio `Total Exportaciones MM US$` `Total Importaciones MM US$`
##   <dbl>                        <dbl>                        <dbl>
## 1  2017                       10572.                       10572.
## 2  2018                       11830.                       11830.
## 3  2019                       12018.                       12018.
## 4  2020                        5796.                        5796.

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()` regrouping output by 'pais' (override with `.groups` argument)
## # A tibble: 763 x 4
## # Groups:   pais [228]
##    pais        anio `Total Exportaciones` `Total Importaciones`
##    <chr>      <dbl>                 <dbl>                 <dbl>
##  1 Afganistan  2017                 1111.                 1111.
##  2 Afganistan  2018                23573.                23573.
##  3 Afganistan  2019                13114.                13114.
##  4 Albania     2017                12643.                12643.
##  5 Albania     2018                18307.                18307.
##  6 Albania     2019                25660.                25660.
##  7 Albania     2020               115956.               115956.
##  8 Alemania    2017            183179994.            183179994.
##  9 Alemania    2018            185817905.            185817905.
## 10 Alemania    2019            174500554.            174500554.
## # ... with 753 more rows