? dplyr purrr, id.1/id.2 .1 .2 , . by. , inner_join -ing df2 df1, inner_join -ing id .
require(dplyr)
require(purrr)
df1 <- tibble(
x = c(4, 4, 3, 8),
y = c(5, 6, 6, 2),
z = c(8, 7, 7, 8),
w = c(9, 4, 10, 9)
)
df2 <- tibble(
x = c(6, 2, 4, 4),
y = c(2, 6, 5, 5),
z = c(7, 7, 8, 8),
w = c(9, 10, 12, 13)
)
df1 <- df1 %>%
mutate(id.1 = 1:length(.)) %>%
rename(
x.1 = x,
y.1 = y,
z.1 = z,
w.1 = w
)
df2 <- df2 %>%
mutate(id.2 = 1:length(.)) %>%
rename(
x.2 = x,
y.2 = y,
z.2 = z,
w.2 = w
)
inner_join_by <-
list(
c("x.1" = "x.2", "y.1" = "y.2"),
c("x.1" = "x.2", "z.1" = "z.2"),
c("x.1" = "x.2", "w.1" = "w.2"),
c("y.1" = "y.2", "z.1" = "z.2"),
c("y.1" = "y.2", "w.1" = "w.2"),
c("z.1" = "z.2", "w.1" = "w.2")
)
filtered <- inner_join_by %>%
map_df(.f = ~inner_join(x = df1, y = df2, by = .x)) %>%
select(id.1, id.2) %>%
distinct()