mutate-joins.SpatVector {tidyterra} | R Documentation |
Mutating joins for SpatVector
objects
Description
Mutating joins add columns from y
to x
, matching observations based on
the keys. There are four mutating joins: the inner join, and the three outer
joins.
See dplyr::inner_join()
for details.
Usage
## S3 method for class 'SpatVector'
inner_join(
x,
y,
by = NULL,
copy = FALSE,
suffix = c(".x", ".y"),
...,
keep = NULL
)
## S3 method for class 'SpatVector'
left_join(
x,
y,
by = NULL,
copy = FALSE,
suffix = c(".x", ".y"),
...,
keep = NULL
)
## S3 method for class 'SpatVector'
right_join(
x,
y,
by = NULL,
copy = FALSE,
suffix = c(".x", ".y"),
...,
keep = NULL
)
## S3 method for class 'SpatVector'
full_join(
x,
y,
by = NULL,
copy = FALSE,
suffix = c(".x", ".y"),
...,
keep = NULL
)
Arguments
x |
A |
y |
A data frame or other object coercible to a data frame. If a
|
by |
A join specification created with If To join on different variables between To join by multiple variables, use a
For simple equality joins, you can alternatively specify a character vector
of variable names to join by. 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
|
Value
A SpatVector
object.
terra equivalent
Methods
Implementation of the generic dplyr::inner_join()
family
SpatVector
The geometry column has a sticky behavior. This means that the result would
have always the geometry of x
for the records that matches the join
conditions.
Note that for right_join()
and full_join()
it is possible to return
empty geometries (since y
is expected to be a data frame with no
geometries). Although this kind of joining operations may not be common on
spatial manipulation, it is possible that the function crashes, since
handling of EMPTY
geometries differs on terra and sf.
See Also
dplyr::inner_join()
, dplyr::left_join()
, dplyr::right_join()
,
dplyr::full_join()
, terra::merge()
Other dplyr verbs that operate on pairs Spat*
/data.frame:
bind_cols.SpatVector
,
bind_rows.SpatVector
,
filter-joins.SpatVector
Other dplyr methods:
arrange.SpatVector()
,
bind_cols.SpatVector
,
bind_rows.SpatVector
,
count.SpatVector()
,
distinct.SpatVector()
,
filter-joins.SpatVector
,
filter.Spat
,
glimpse.Spat
,
group-by.SpatVector
,
mutate.Spat
,
pull.Spat
,
relocate.Spat
,
rename.Spat
,
rowwise.SpatVector()
,
select.Spat
,
slice.Spat
,
summarise.SpatVector()
Examples
library(terra)
library(ggplot2)
# Vector
v <- terra::vect(system.file("extdata/cyl.gpkg", package = "tidyterra"))
# A data frame
df <- data.frame(
cpro = sprintf("%02d", 1:10),
x = runif(10),
y = runif(10),
letter = rep_len(LETTERS[1:3], length.out = 10)
)
# Inner join
inner <- v %>% inner_join(df)
nrow(inner)
autoplot(inner, aes(fill = letter)) + ggtitle("Inner Join")
# Left join
left <- v %>% left_join(df)
nrow(left)
autoplot(left, aes(fill = letter)) + ggtitle("Left Join")
# Right join
right <- v %>% right_join(df)
nrow(right)
autoplot(right, aes(fill = letter)) + ggtitle("Right Join")
# There are empty geometries, check with data from df
ggplot(right, aes(x, y)) +
geom_point(aes(color = letter))
# Full join
full <- v %>% full_join(df)
nrow(full)
autoplot(full, aes(fill = letter)) + ggtitle("Full Join")
# Check with data from df
ggplot(full, aes(x, y)) +
geom_point(aes(color = letter))