Introducción

Queremos fusionar dos bases de datos. Una tiene información sobre la variación porcentual del Producto Interno Bruto para dos estados de México y para dos años respectivamente (B1). La otra tiene información sobre la tasa de desocupación también para dos estados de México y para dos años (B2).

print(B1)
## # A tibble: 4 x 3
##   ENTIDAD PERIODO VAR.PIB
##   <chr>     <dbl>   <dbl>
## 1 CDMX       2019     0.4
## 2 CDMX       2018     2.7
## 3 SLP        2019    -0.1
## 4 SLP        2018     4.2
print(B2)
## # A tibble: 4 x 3
##   EDO     PER DESOCUP
##   <chr> <dbl>   <dbl>
## 1 CDMX   2019     5.1
## 2 CDMX   2018     5.1
## 3 QRO    2019     4.6
## 4 QRO    2018     3.6

Sin embargo, la fusión de estas bases de datos tiene tres dificultades:

¿Cómo pueden fusionarse estas bases de datos y qué comandos utilizar?

Comando Merge

Merge es un comando de R base. Esto implica que no se requiere instalar ninguna paquetería para ser utilizado. Este comando permite fusionar dos bases de datos utilizando los nombres de columnas o variables comunes. La sintaxis más básica de este comando es merge(x,y), donde ‘x’ y ‘y’ son las dos bases de datos. Si usamos el comando merge en su forma más simple con B1 y B2, este es el resultado (no deseado):

BT1 <- merge(B1,B2)
print(BT1)
##    ENTIDAD PERIODO VAR.PIB  EDO  PER DESOCUP
## 1     CDMX    2019     0.4 CDMX 2019     5.1
## 2     CDMX    2018     2.7 CDMX 2019     5.1
## 3      SLP    2019    -0.1 CDMX 2019     5.1
## 4      SLP    2018     4.2 CDMX 2019     5.1
## 5     CDMX    2019     0.4 CDMX 2018     5.1
## 6     CDMX    2018     2.7 CDMX 2018     5.1
## 7      SLP    2019    -0.1 CDMX 2018     5.1
## 8      SLP    2018     4.2 CDMX 2018     5.1
## 9     CDMX    2019     0.4  QRO 2019     4.6
## 10    CDMX    2018     2.7  QRO 2019     4.6
## 11     SLP    2019    -0.1  QRO 2019     4.6
## 12     SLP    2018     4.2  QRO 2019     4.6
## 13    CDMX    2019     0.4  QRO 2018     3.6
## 14    CDMX    2018     2.7  QRO 2018     3.6
## 15     SLP    2019    -0.1  QRO 2018     3.6
## 16     SLP    2018     4.2  QRO 2018     3.6

El resultado no es el deseado porque duplicó las columnas del Estado y las del Año. Además, a cada observación de B1, le asignó las observaciones de B2.

Merge+‘by.x’=+‘by.y=’

Para unir estas bases de datos correctamente, debemos darle al comando merge más especificaciones que solamente las bases de datos. En este caso, nos gustaría que se fusionaran las bases según el nombre del estado y, luego, según el año. Para esto, debemos indicarle al comando cuáles serán las variables que tomara como referencia para su unión en cada una de las bases. Primero, según el nombre de la ciudad, debemos indicar que, en B1, la variable será ‘ENTIDAD’ y, en B2, la variable será ‘EDO’. Luego, según el año, debemos indicar que, en B1, la variable será ‘PERIODO’ y, en B2, la variable será ‘PER’. Con by.x=, especificamos los criterios de la primera base de datos incluida en el comando (B1) y, con by.y=, especificamos los criterios de la segunda base de datos (B2). Este sería el resultado:

BT2 <- merge(B1,B2,by.x=c("ENTIDAD","PERIODO"), by.y=c("EDO","PER"))
print(BT2)
##   ENTIDAD PERIODO VAR.PIB DESOCUP
## 1    CDMX    2018     2.7     5.1
## 2    CDMX    2019     0.4     5.1

Noten que en la especificación by.x= incluimos la opción c("ENTIDAD","PERIODO") porque son dos criterios por los cuales se debe fusionar. Si fuese un solo criterio, por ejemplo: “ENTIDAD”, solo escribimos by.x=”ENTIDAD” y by.y="EDO".

Esta base se acerca un poco más a lo que deseamos. Sin embargo, aun con estas especificaciones, esta nueva base de datos solo se quedó con información de la entidad que era común en las dos bases de datos anteriores (CDMX) y para la que se tenía toda la información.

Merge+‘by.x’=+‘by.y=’+‘all=TRUE’

Para quedarnos con todos los estados independientemente de si falta información o no, debemos especificarle al comando merge la opción all=TRUE. Este es el resultado final:

BT3 <- merge(B1,B2,by.x=c("ENTIDAD","PERIODO"),by.y=c("EDO","PER"),all=TRUE)
print(BT3)
##   ENTIDAD PERIODO VAR.PIB DESOCUP
## 1    CDMX    2018     2.7     5.1
## 2    CDMX    2019     0.4     5.1
## 3     QRO    2018      NA     3.6
## 4     QRO    2019      NA     4.6
## 5     SLP    2018     4.2      NA
## 6     SLP    2019    -0.1      NA

Esta es la versión más cercana a la deseable: incluye a todos los estados en ambas bases de datos e hizo el emparejamiento perfecto según el nombre del estado y el año.

Al final, ¿cuál de las variaciones del comando ‘merge’ se debe utilizar? Solo dependerá de la necesidad de la persona que esté administrando las bases de datos.