Natural join is a join by identity on all common columns specified in the by argument. Any common columns not specified in the by argument are coalesced into a single column preferring the first or "a" table.

natural_join(a, b, ..., by, jointype = "INNER", env = parent.frame())

Arguments

a

source to select from.

b

source to select from.

...

force later arguments to bind by name

by

character, set of columns to match. If by is a named character vector the right table will have columns renamed.

jointype

type of join ('INNER', 'LEFT', 'RIGHT', 'FULL').

env

environment to look to.

Value

natural_join node.

Examples

if(requireNamespace("DBI", quietly = TRUE) && requireNamespace("RSQLite", quietly = TRUE)) { my_db <- DBI::dbConnect(RSQLite::SQLite(), ":memory:") d1 <- rq_copy_to( my_db, 'd1', build_frame( "key", "val", "val1" | "a" , 1 , 10 | "b" , 2 , 11 | "c" , 3 , 12 )) d2 <- rq_copy_to( my_db, 'd2', build_frame( "key", "val", "val2" | "a" , 5 , 13 | "b" , 6 , 14 | "d" , 7 , 15 )) # key matching join optree <- natural_join(d1, d2, jointype = "LEFT", by = 'key') execute(my_db, optree) %.>% print(.) DBI::dbDisconnect(my_db) }
#> key val val1 val2 #> 1 a 1 10 13 #> 2 b 2 11 14 #> 3 c 3 12 NA