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 de x que tienen valores coincidentes en y, y todas las columnas de x e y. Si hay varias coincidencias entre x e y, se devuelven todas las combinaciones.

  • left_join(): devuelve todas las filas de x y todas las columnas de x e y. Las filas de x sin correspondencia en y contendrán NA en las nuevas columnas. Si hay varias coincidencias entre x e y, se devuelven todas las combinaciones (duplicando las filas).

    right_join() hace lo contrario, devuelve todas las filas de y.

    full_join() devuelve todas las filas de x e y (duplicando o asignando NA si es necesario).

  • semi_join(): devuelve las filas de x que tienen valores coincidentes en y, manteniendo sólo las columnas de x (al contrario que inner_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 en x y en y.

  • union(x, y): observaciones en x o y no duplicadas.

  • setdiff(x, y): observaciones en x pero no en y.