left join r dplyr - Cómo unir (fusionar)marcos de datos (interior,exterior,izquierda,derecha)

merge r examples / r / join / merge / dataframe / r-faq

¿Cómo puedo hacer uniones de estilo de base de datos, es decir, estilo SQL ? Es decir, cómo obtengo:

Dados dos marcos de datos:

df1 = data.frame(CustomerId = c(1:6), Product = c(rep("Toaster", 3), rep("Radio", 3)))
df2 = data.frame(CustomerId = c(2, 4, 6), State = c(rep("Alabama", 2), rep("Ohio", 1)))

df1
# CustomerId Producto
# 1 tostadora
# 2 tostadora
# 3 tostadora
#           4   Radio
#           5   Radio
#           6   Radio

df2
#  CustomerId   State
#           2 Alabama
#           4 Alabama
#           6    Ohio

Arsen Khachaturyan



Answer #1
merge(df1, df2)
#   V1 V2
# 1  B  2
# 2  C  3
dplyr::intersect(df1, df2)
#   V1 V2
# 1  B  2
# 2  C  3
data.table::fintersect(setDT(df1), setDT(df2))
#    V1 V2
# 1:  B  2
# 2:  C  3

Datos de ejemplo:

df1 <- data.frame(V1 = LETTERS[1:4], V2 = 1:4)
df2 <- data.frame(V1 = LETTERS[2:3], V2 = 2:3)