data.table (version 1.5.3)

merge: Merge Two Data Tables

Description

Relatively quick merge of data tables based on common keys.

Usage

## S3 method for class 'data.table':
merge(x, y, all = FALSE, all.x = all, all.y = all, ...)

Arguments

x, y
data tables.
all
logical; all = L is shorthand for all.x = L and all.y = L.
all.x
logical; if TRUE, then extra rows will be added to the output, one for each row in x that has no matching row in y. These rows will have 'NA's in those columns that are usually filled w
all.y
logical; analogous to all.x above.
...
Not used at this time.

Value

  • A data table based on the merged data tables, sorted by the common keys.

Details

Keys must be in the same order.

See Also

data.table, merge

Examples

Run this code
(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)

    (dt1 <- data.table(A = c(rep(1L, 5), 2L), B = letters[rep(1:3, 2)], X = 1:6, key = "A,B"))
    (dt2 <- data.table(A = c(rep(1L, 5), 2L), B = letters[rep(2:4, 2)], Y = 6:1, key = "A,B"))
    merge(dt1, dt2)

    # test it more:
    d1 <- data.table(a=rep(1:2,each=3), b=1:6, key="a,b")
    d2 <- J(a=0:1, bb=10:11, key="a") 
    d3 <- J(a=0:1, key="a") 
    d4 <- J(a=0:1, b=0:1, key="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(d4, d1) 
    merge(d1, d4, all=TRUE)
    merge(d4, d1, all=TRUE)

Run the code above in your browser using DataCamp Workspace