Permite seleccionar las columnas (variables) de un dataframe.
Sintaxis simple:
dataframe %>% select(columna1,columna2,…)
Las columnas pueden ir en el orden que se desee (o que se necesite), no obligatoriamente en el orden en que aparecen en el dataframe.
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 dataframe data_comercio_exterior
load("C:/Users/Melvin/Desktop/Metodos/comercio_ exterior/data_comercio_exterior.RData")
#Cargamos el paquete "dplyr"
library(dplyr)
library(kableExtra) #Sólo es para formato de las tablas de estos apuntes
data_comercio_exterior %>%
select("pais", "sac","anio","mes","valor_cif") %>%
head() %>% kable(caption = "Ejemplo 1") %>% kable_minimal()
| pais | sac | anio | mes | valor_cif |
|---|---|---|---|---|
| Afganistan | 4010390000 | 2017 | 04 | 58.06 |
| Afganistan | 6812999000 | 2017 | 04 | 88.38 |
| Afganistan | 8487900000 | 2017 | 04 | 20.93 |
| Afganistan | 8511800000 | 2017 | 04 | 98.93 |
| Afganistan | 8708930000 | 2017 | 04 | 62.18 |
| Afganistan | 9028200000 | 2017 | 04 | 130.06 |
Permite seleccionar las filas (casos) de un dataframe, con base en el cumplimiento de criterios.
dataframe %>% filter(columna1 operadores “criterio 1”,columna2 operadores "criterio 2,…)
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)
library(kableExtra)
data_comercio_exterior %>%
select("pais", "sac","anio","mes","valor_fob") %>%
filter(anio=="2019", pais %in% c("Guatemala","Honduras"),valor_fob>100000)%>%
head() %>% kable(caption = "Ejemplo 1 Filter") %>% kable_minimal()
| pais | sac | anio | mes | valor_fob |
|---|---|---|---|---|
| Guatemala | 0105110000 | 2019 | 01 | 402629.0 |
| Guatemala | 0403109000 | 2019 | 01 | 333543.0 |
| Guatemala | 0406202000 | 2019 | 01 | 727621.4 |
| Guatemala | 0406909000 | 2019 | 01 | 161110.7 |
| Guatemala | 1101000000 | 2019 | 01 | 561071.4 |
| Guatemala | 1102200000 | 2019 | 01 | 439247.5 |
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)
head() %>% kable(caption = "Ejemplo 2 Filter") %>% kable_minimal()
| pais | sac | anio | mes | valor_cif | kilogramos_importaciones | valor_fob | kilogramos_exportaciones |
|---|---|---|---|---|---|---|---|
| Mexico | 0402991000 | 2017 | 10 | 330.77 | 31.20 | 0 | 0 |
| Mexico | 0403109000 | 2017 | 10 | 51405.81 | 41599.26 | 0 | 0 |
| Mexico | 0406109000 | 2017 | 10 | 29547.08 | 8375.40 | 0 | 0 |
| Mexico | 0406909000 | 2017 | 10 | 38576.24 | 17346.65 | 0 | 0 |
| Mexico | 0703101200 | 2017 | 10 | 78626.28 | 536662.00 | 0 | 0 |
| Mexico | 0703101300 | 2017 | 10 | 4958.50 | 45500.00 | 0 | 0 |
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%`
`%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.)"))%>%
head() %>% kable(caption = "Ejemplo 3 Filter") %>% kable_minimal()
| pais | sac | anio | mes | valor_cif | kilogramos_importaciones | valor_fob | kilogramos_exportaciones |
|---|---|---|---|---|---|---|---|
| Afganistan | 6913100000 | 2017 | 12 | 650.43 | 5.49 | 0 | 0 |
| Afganistan | 7326209000 | 2017 | 12 | 2.00 | 0.01 | 0 | 0 |
| Afganistan | 6104220000 | 2018 | 10 | 3153.37 | 2407.61 | 0 | 0 |
| Afganistan | 6104620000 | 2018 | 10 | 946.01 | 722.28 | 0 | 0 |
| Afganistan | 6105100000 | 2018 | 10 | 9405.39 | 7181.03 | 0 | 0 |
| Afganistan | 6106100000 | 2018 | 10 | 1353.32 | 1725.55 | 0 | 0 |
Permiten agregar transformaciones de columnas (variables) de un dataframe. mutate agrega nuevas variables con la transformación de las columnas.
Sintaxis simple:
dataframe %>% mutate(nueva_variable= operaciones con variables,…)
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")%>%
head() %>% kable(caption = "Ejemplo 1") %>% kable_minimal()
| pais | sac | anio | mes | saldo_bc |
|---|---|---|---|---|
| Afganistan | 4010390000 | 2017 | 04 | -58.06 |
| Afganistan | 6812999000 | 2017 | 04 | -88.38 |
| Afganistan | 8487900000 | 2017 | 04 | -20.93 |
| Afganistan | 8511800000 | 2017 | 04 | -98.93 |
| Afganistan | 8708930000 | 2017 | 04 | -62.18 |
| Afganistan | 9028200000 | 2017 | 04 | -130.06 |
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)%>%
head() %>% kable(caption = "Ejemplo 2") %>% kable_minimal()
| pais | sac | anio | mes | Xpt | Mpt |
|---|---|---|---|---|---|
| Afganistan | 3004909100 | 2019 | 09 | 100.00 | 0.00 |
| Albania | 1701140000 | 2019 | 02 | 100.00 | 0.00 |
| Alemania | 0602100000 | 2017 | 01 | 98.34 | 1.66 |
| Alemania | 0901113000 | 2017 | 01 | 100.00 | 0.00 |
| Alemania | 3203000000 | 2017 | 01 | 100.00 | 0.00 |
| Alemania | 3923409000 | 2017 | 01 | 100.00 | 0.00 |
Permite ordenar las filas del dataframe(ascendente A-Z o descendente Z-A), por una o varias columnas (variables).
Sintaxis simple:
dataframe %>% arrange(variable 1, desc(variable 2), …)
Nota: si la ordenación que se requiere es descendente, escriba la variable dentro de la función desc(), como se indica en la sintaxis. Esta función fue implementada también al momento de generar la Base de Comercio Exterior que estamos usando.
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))%>% #ordena de forma ascedente
head() %>% kable(caption = "Ejemplo 2") %>% kable_minimal()
| pais | sac | anio | mes | Xpt | Mpt |
|---|---|---|---|---|---|
| Alemania | 0901113000 | 2020 | 07 | 100.00 | 0.00 |
| Alemania | 0901210000 | 2020 | 07 | 100.00 | 0.00 |
| Alemania | 1301909000 | 2020 | 07 | 100.00 | 0.00 |
| Alemania | 1604149000 | 2020 | 07 | 100.00 | 0.00 |
| Alemania | 2208401000 | 2020 | 07 | 100.00 | 0.00 |
| Alemania | 3808930000 | 2020 | 07 | 90.35 | 9.65 |
Permite realizar operaciones de agregación de columnas (variables), de cualquier tipo, suma, producto, incluso funciones personalizadas.
Puede usarse en conjunto con group_by para obtener agregados a nivel de grupos.
Sintaxis simple:
dataframe %>% 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)%>%
head() %>% kable(caption = "Ejemplo 1") %>% kable_minimal()
| anio | Total Exportaciones MM US$ | Total Importaciones MM US$ |
|---|---|---|
| 2017 | 5760.015 | 10571.509 |
| 2018 | 5904.627 | 11829.783 |
| 2019 | 5943.316 | 12017.559 |
| 2020 | 2661.861 | 5795.689 |
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))%>%
head() %>% kable(caption = "Ejemplo 2") %>% kable_minimal()
## `summarise()` regrouping output by 'pais' (override with `.groups` argument)
| pais | anio | Total Exportaciones | Total Importaciones |
|---|---|---|---|
| Afganistan | 2017 | 0.00 | 1110.97 |
| Afganistan | 2018 | 0.00 | 23573.11 |
| Afganistan | 2019 | 382.13 | 13113.77 |
| Albania | 2017 | 0.00 | 12643.03 |
| Albania | 2018 | 0.00 | 18307.36 |
| Albania | 2019 | 51392.50 | 25660.16 |