dt | R Documentation |
data.table
functionsFast merge of two data.table
s. The data.table
method behaves
similarly to data.frame
except that row order is specified, and by
default the columns to merge on are chosen:
at first based on the shared key columns, and if there are none,
then based on key columns of the first argument x
, and if there
are none,
then based on the common columns between the two data.table
s.
Use the by
, by.x
and by.y
arguments explicitly to override this default.
as_dt(x, keep.rownames = FALSE, ...)
is_dt(x)
ie_dt(x)
dt_sub(x, row, col)
dt_cols(x, col)
dt_merge(
x,
y,
by = NULL,
by.x = NULL,
by.y = NULL,
all = FALSE,
all.x = all,
all.y = all,
sort = TRUE,
suffixes = c(".x", ".y"),
no.dups = TRUE,
allow.cartesian = base::getOption("datatable.allow.cartesian"),
say = TRUE
)
dt_rows(x, r)
dt_wide(
data,
formula,
fun.aggregate = NULL,
sep = "_",
...,
margins = NULL,
subset = NULL,
fill = NULL,
drop = TRUE,
value.var = data.table:::guess(data),
verbose = base::getOption("datatable.verbose"),
say = TRUE
)
x |
Any object for |
... |
Not used at this time. |
row , col |
Complete indexer vecs or complete character vecs identifying rows and columns of |
y |
A data.table to be merged with |
by |
A vector of shared column names in |
by.x , by.y |
Vectors of column names in |
all |
logical; |
all.x |
logical; if |
all.y |
logical; analogous to |
sort |
logical. If |
suffixes |
A |
no.dups |
logical indicating that |
allow.cartesian |
See |
say |
Logical scalar indicating whether to update user on progress. |
data |
A |
formula |
A formula of the form LHS ~ RHS to cast, see Details. |
fun.aggregate |
Should the data be aggregated before casting? If the formula doesn't identify a single observation for each cell, then aggregation defaults to To use multiple aggregation functions, pass a |
sep |
Character vector of length 1, indicating the separating character in variable names generated during casting. Default is |
margins |
Not implemented yet. Should take variable names to compute margins on. A value of |
subset |
Specified if casting should be done on a subset of the data. Ex: |
fill |
Value with which to fill missing cells. If |
drop |
|
value.var |
Name of the column whose values will be filled to cast. Function Cast multiple |
verbose |
Not used yet. May be dropped in the future or used to provide informative messages through the console. |
dt_merge | Thinly wraps merge . |
dt_wide | Thinly wraps dcast . |
dt_rows | Selects rows. |
dt_cols | Selects columns without x[ , ..var] . |
dt_sub | Selects a subtable without x[row.var, ..col.var] . |
as_dt | Thinly wraps as.data.table . |
is_dt | Thinly wraps is.data.table . |
ie_dt | Convert to data.table , if needed. |
A data.table.
Other wraps:
basics_help()
,
dp()
,
gg_help()
,
gr
,
rd_help()
,
tb_help()
(dt1 <- data.table(A = letters[1:10], X = 1:10, key = "A"))
(dt2 <- data.table(A = letters[5:14], Y = 1:10, key = "A"))
merge(dt1, dt2)
merge(dt1, dt2, all = TRUE)
(dt1 <- data.table(A = letters[rep(1:3, 2)], X = 1:6, key = "A"))
(dt2 <- data.table(A = letters[rep(2:4, 2)], Y = 6:1, key = "A"))
merge(dt1, dt2, allow.cartesian=TRUE)
(dt1 <- data.table(A = c(rep(1L, 5), 2L), B = letters[rep(1:3, 2)], X = 1:6, key = c("A", "B")))
(dt2 <- data.table(A = c(rep(1L, 5), 2L), B = letters[rep(2:4, 2)], Y = 6:1, key = c("A", "B")))
merge(dt1, dt2)
merge(dt1, dt2, by="B", allow.cartesian=TRUE)
# test it more:
d1 <- data.table(a=rep(1:2,each=3), b=1:6, key=c("a", "b"))
d2 <- data.table(a=0:1, bb=10:11, key="a")
d3 <- data.table(a=0:1, key="a")
d4 <- data.table(a=0:1, b=0:1, key=c("a", "b"))
merge(d1, d2)
merge(d2, d1)
merge(d1, d2, all=TRUE)
merge(d2, d1, all=TRUE)
merge(d3, d1)
merge(d1, d3)
merge(d1, d3, all=TRUE)
merge(d3, d1, all=TRUE)
merge(d1, d4)
merge(d1, d4, by="a", suffixes=c(".d1", ".d4"))
merge(d4, d1)
merge(d1, d4, all=TRUE)
merge(d4, d1, all=TRUE)
# setkey is automatic by default
set.seed(1L)
d1 <- data.table(a=sample(rep(1:3,each=2)), z=1:6)
d2 <- data.table(a=2:0, z=10:12)
merge(d1, d2, by="a")
merge(d1, d2, by="a", all=TRUE)
# using by.x and by.y
setnames(d2, "a", "b")
merge(d1, d2, by.x="a", by.y="b")
merge(d1, d2, by.x="a", by.y="b", all=TRUE)
merge(d2, d1, by.x="b", by.y="a")
# using incomparables values
d1 <- data.table(a=c(1,2,NA,NA,3,1), z=1:6)
d2 <- data.table(a=c(1,2,NA), z=10:12)
merge(d1, d2, by="a")
merge(d1, d2, by="a", incomparables=NA)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.