Similar to base R set functions, union
, intersect
, setdiff
and setequal
but for data.table
s. Additional all
argument controls how duplicated rows are handled. Functions fintersect
, setdiff
(MINUS
or EXCEPT
in SQL) and funion
are meant to provide functionality of corresponding SQL operators. Unlike SQL, data.table functions will retain row order.
fintersect(x, y, all = FALSE)
fsetdiff(x, y, all = FALSE)
funion(x, y, all = FALSE)
fsetequal(x, y, all = TRUE)
data.table
s.
Logical. Default is FALSE
and removes duplicate rows on the result. When TRUE
, if there are xn
copies of a particular row in x
and yn
copies of the same row in y
, then:
fintersect
will return min(xn, yn)
copies of that row.
fsetdiff
will return max(0, xn-yn)
copies of that row.
funion
will return xn+yn
copies of that row.
fsetequal
will return FALSE
unless xn == yn
.
A data.table in case of fintersect
, funion
and fsetdiff
. Logical TRUE
or FALSE
for fsetequal
.
bit64::integer64
columns are supported but not complex
and list
, except for funion
.
data.table
, rbindlist
, all.equal.data.table
, unique
, duplicated
, uniqueN
, anyDuplicated
# NOT RUN {
x = data.table(c(1,2,2,2,3,4,4))
x2 = data.table(c(1,2,3,4)) # same set of rows as x
y = data.table(c(2,3,4,4,4,5))
fintersect(x, y) # intersect
fintersect(x, y, all=TRUE) # intersect all
fsetdiff(x, y) # except
fsetdiff(x, y, all=TRUE) # except all
funion(x, y) # union
funion(x, y, all=TRUE) # union all
fsetequal(x, x2, all=FALSE) # setequal
fsetequal(x, x2) # setequal all
# }
Run the code above in your browser using DataLab