| mutate_joins {poorman} | R Documentation |
Mutating Joins
Description
The mutating joins add columns from y to x, matching rows based on the keys:
-
inner_join(): includes all rows inxandy. -
left_join(): includes all rows inx. -
right_join(): includes all rows iny. -
full_join(): includes all rows inxory.
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.
Usage
inner_join(
x,
y,
by = NULL,
suffix = c(".x", ".y"),
...,
na_matches = c("na", "never")
)
left_join(
x,
y,
by = NULL,
suffix = c(".x", ".y"),
...,
keep = FALSE,
na_matches = c("na", "never")
)
right_join(
x,
y,
by = NULL,
suffix = c(".x", ".y"),
...,
keep = FALSE,
na_matches = c("na", "never")
)
full_join(
x,
y,
by = NULL,
suffix = c(".x", ".y"),
...,
keep = FALSE,
na_matches = c("na", "never")
)
Arguments
x, y |
The |
by |
A character vector of variables to join by. If To join by different variables on x and y use a named vector. For example, To join by multiple variables, use a vector with length > 1. For example, To perform a cross-join, generating all combinations of |
suffix |
|
... |
Additional arguments to pass to |
na_matches |
Should The default, Use |
keep |
|
Value
A data.frame. 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 ofxrows. Forleft_join(), allxrows. Forright_join(), a subset ofxrows, followed by unmatchedyrows. Forfull_join(), allxrows, followed by unmatchedyrows.For all joins, rows will be duplicated if one or more rows in
xmatches multiple rows iny.Output columns include all
xcolumns and allycolumns. If columns inxandyhave the same name (and aren't included inby),suffixes are added to disambiguate.Output columns included in
byare coerced to common type acrossxandy.Groups are taken from
x.
Examples
# 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 <- data.frame(x = 1:3)
df2 <- data.frame(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")