# Example data frames
df1 <- data.frame(key = c(1, 1, 1, 2, 2, 2),
a = c("a", "a", "a", "a", "a", "a"))
df2 <- data.frame(key = c(2, 3),
b = c("b", "b"))
# See all different joins in action
join_methods <- c("left", "right", "inner", "full", "outer", "left_inner", "right_inner")
joined_data <- list()
for (method in seq_along(join_methods)){
joined_data[[method]] <- multi_join(list(df1, df2),
on = "key",
how = join_methods[[method]])
}
# Left join on more than one key
df1b <- data.frame(key1 = c(1, 1, 1, 2, 2, 2),
key2 = c("a", "a", "a", "a", "a", "a"),
a = c("a", "a", "a", "a", "a", "a"))
df2b <- data.frame(key1 = c(2, 3),
key2 = c("a", "a"),
b = c("b", "b"))
left_joined <- multi_join(list(df1b, df2b), on = c("key1", "key2"))
# Join more than two data frames
df3 <- data.frame(key = c(1, 2),
c = c("c", "c"))
multiple_joined <- multi_join(list(df1, df2, df3), on = "key")
# You can also use different methods for each join
multiple_joined2 <- multi_join(list(df1, df3, df2),
on = "key",
how = c("left", "right"))
# Joining on different variable names
df1c <- data.frame(key1 = c(1, 1, 1, 2, 2, 2),
key2 = c("a", "a", "a", "a", "a", "a"),
a = c("a", "a", "a", "a", "a", "a"))
df2c <- data.frame(var1 = c(2, 3),
var2 = c("a", "a"),
b = c("b", "b"))
df3c <- data.frame(any = c(1, 2),
name = c("a", "a"),
c = c("c", "c"))
multiple_joined3 <- multi_join(list(df1c, df2c, df3c),
on = list(df1c = c("key1", "key2"),
df2c = c("var1", "var2"),
df3c = c("any", "name")))
Run the code above in your browser using DataLab