B.5 Operaciones con tablas de datos {# dplyr-join}
Se emplean funciones xxx_join()
(ver la documentación del paquete
Join two tbls together,
o la vignette Two-table verbs):
inner_join()
: devuelve las filas dex
que tienen valores coincidentes eny
, y todas las columnas dex
ey
. Si hay varias coincidencias entrex
ey
, se devuelven todas las combinaciones.left_join()
: devuelve todas las filas dex
y todas las columnas dex
ey
. Las filas dex
sin correspondencia eny
contendránNA
en las nuevas columnas. Si hay varias coincidencias entrex
ey
, se devuelven todas las combinaciones (duplicando las filas).right_join()
hace lo contrario, devuelve todas las filas dey
.full_join()
devuelve todas las filas dex
ey
(duplicando o asignandoNA
si es necesario).semi_join()
: devuelve las filas dex
que tienen valores coincidentes eny
, manteniendo sólo las columnas dex
(al contrario queinner_join()
no duplica filas).anti_join()
hace lo contrario, devuelve las filas sin correspondencia.
El parámetro by
determina las variables clave para las correspondencias.
Si no se establece se considerarán todas las que tengan el mismo nombre en ambas tablas.
Se puede establecer a un vector de nombres coincidentes y en caso de que los nombres sean distintos a un vector con nombres de la forma c("clave_x" = "clave_y")
.
Adicionalmente, si las tablas x
e y
tienen las mismas variables, se pueden combinar las observaciones con operaciones de conjuntos:
intersect(x, y)
: observaciones enx
y eny
.union(x, y)
: observaciones enx
oy
no duplicadas.setdiff(x, y)
: observaciones enx
pero no eny
.