-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
Copy pathsetops.Rd
77 lines (65 loc) · 2.11 KB
/
setops.Rd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/sets.R
\name{setops}
\alias{setops}
\alias{intersect}
\alias{union}
\alias{union_all}
\alias{setdiff}
\alias{setequal}
\alias{symdiff}
\title{Set operations}
\usage{
intersect(x, y, ...)
union(x, y, ...)
union_all(x, y, ...)
setdiff(x, y, ...)
setequal(x, y, ...)
symdiff(x, y, ...)
}
\arguments{
\item{x, y}{Pair of compatible data frames. A pair of data frames is
compatible if they have the same column names (possibly in different
orders) and compatible types.}
\item{...}{These dots are for future extensions and must be empty.}
}
\description{
Perform set operations using the rows of a data frame.
\itemize{
\item \code{intersect(x, y)} finds all rows in both \code{x} and \code{y}.
\item \code{union(x, y)} finds all rows in either \code{x} or \code{y}, excluding duplicates.
\item \code{union_all(x, y)} finds all rows in either \code{x} or \code{y}, including duplicates.
\item \code{setdiff(x, y)} finds all rows in \code{x} that aren't in \code{y}.
\item \code{symdiff(x, y)} computes the symmetric difference, i.e. all rows in
\code{x} that aren't in \code{y} and all rows in \code{y} that aren't in \code{x}.
\item \code{setequal(x, y)} returns \code{TRUE} if \code{x} and \code{y} contain the same rows
(ignoring order).
}
Note that \code{intersect()}, \code{union()}, \code{setdiff()}, and \code{symdiff()} remove
duplicates in \code{x} and \code{y}.
}
\section{Base functions}{
\code{intersect()}, \code{union()}, \code{setdiff()}, and \code{setequal()} override the base
functions of the same name in order to make them generic. The existing
behaviour for vectors is preserved by providing default methods that call
the base functions.
}
\examples{
df1 <- tibble(x = 1:3)
df2 <- tibble(x = 3:5)
intersect(df1, df2)
union(df1, df2)
union_all(df1, df2)
setdiff(df1, df2)
setdiff(df2, df1)
symdiff(df1, df2)
setequal(df1, df2)
setequal(df1, df1[3:1, ])
# Note that the following functions remove pre-existing duplicates:
df1 <- tibble(x = c(1:3, 3, 3))
df2 <- tibble(x = c(3:5, 5))
intersect(df1, df2)
union(df1, df2)
setdiff(df1, df2)
symdiff(df1, df2)
}