Mutating joins
The mutating joins add columns from y
to x
, matching rows based on the
keys:
inner_join()
: includes all rows in x
and y
.
left_join()
: includes all rows in x
.
right_join()
: includes all rows in y
.
full_join()
: includes all rows in x
or y
.
If a row in x
matches multiple rows in y
, all the rows in y
will be returned
once for each matching row in x
.
inner_join( x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ..., keep = FALSE ) ## S3 method for class 'data.frame' inner_join( x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ..., keep = FALSE, na_matches = c("na", "never") ) left_join( x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ..., keep = FALSE ) ## S3 method for class 'data.frame' left_join( x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ..., keep = FALSE, na_matches = c("na", "never") ) right_join( x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ..., keep = FALSE ) ## S3 method for class 'data.frame' right_join( x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ..., keep = FALSE, na_matches = c("na", "never") ) full_join( x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ..., keep = FALSE ) ## S3 method for class 'data.frame' full_join( x, y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ..., keep = FALSE, na_matches = c("na", "never") )
x, y |
A pair of data frames, data frame extensions (e.g. a tibble), or lazy data frames (e.g. from dbplyr or dtplyr). See Methods, below, for more details. |
by |
A character vector of variables to join by. If To join by different variables on To join by multiple variables, use a vector with length > 1.
For example, To perform a cross-join, generating all combinations of |
copy |
If |
suffix |
If there are non-joined duplicate variables in |
... |
Other parameters passed onto methods. |
keep |
Should the join keys from both |
na_matches |
Should The default, Use |
An object of the same type as x
. The order of the rows and columns of x
is preserved as much as possible. The output has the following properties:
For inner_join()
, a subset of x
rows.
For left_join()
, all x
rows.
For right_join()
, a subset of x
rows, followed by unmatched y
rows.
For full_join()
, all x
rows, followed by unmatched y
rows.
For all joins, rows will be duplicated if one or more rows in x
matches
multiple rows in y
.
Output columns include all x
columns and all y
columns. If columns in
x
and y
have the same name (and aren't included in by
), suffix
es are
added to disambiguate.
Output columns included in by
are coerced to common type across
x
and y
.
Groups are taken from x
.
These functions are generics, which means that packages can provide implementations (methods) for other classes. See the documentation of individual methods for extra arguments and differences in behaviour.
Methods available in currently loaded packages:
inner_join()
: no methods found.
left_join()
: no methods found.
right_join()
: no methods found.
full_join()
: no methods found.
Other joins:
filter-joins
,
nest_join()
band_members %>% inner_join(band_instruments) band_members %>% left_join(band_instruments) band_members %>% right_join(band_instruments) band_members %>% full_join(band_instruments) # To suppress the message about joining variables, supply `by` band_members %>% inner_join(band_instruments, by = "name") # This is good practice in production code # Use a named `by` if the join variables have different names band_members %>% full_join(band_instruments2, by = c("name" = "artist")) # By default, the join keys from `x` and `y` are coalesced in the output; use # `keep = TRUE` to keep the join keys from both `x` and `y` band_members %>% full_join(band_instruments2, by = c("name" = "artist"), keep = TRUE) # If a row in `x` matches multiple rows in `y`, all the rows in `y` will be # returned once for each matching row in `x` df1 <- tibble(x = 1:3) df2 <- tibble(x = c(1, 1, 2), y = c("first", "second", "third")) df1 %>% left_join(df2) # By default, NAs match other NAs so that there are two # rows in the output of this join: df1 <- data.frame(x = c(1, NA), y = 2) df2 <- data.frame(x = c(1, NA), z = 3) left_join(df1, df2) # You can optionally request that NAs don't match, giving a # a result that more closely resembles SQL joins left_join(df1, df2, na_matches = "never")
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.