R: Inner, Left, Right, Outer, Semi and Anti Join for Data Tables

JoinTables {batchtools} | R Documentation

## Inner, Left, Right, Outer, Semi and Anti Join for Data Tables

### Description

These helper functions perform join operations on data tables. Most of them are basically one-liners. See http://rpubs.com/ronasta/join_data_tables for a overview of join operations in data table or alternatively dplyr's vignette on two table verbs.

### Usage

    ijoin(x, y, by = NULL)

    ljoin(x, y, by = NULL)

    rjoin(x, y, by = NULL)

    ojoin(x, y, by = NULL)

    sjoin(x, y, by = NULL)

    ajoin(x, y, by = NULL)

    ujoin(x, y, all.y = FALSE, by = NULL)

### Arguments

`x` | [`data.frame`] First data.frame to join.
`y` | [`data.frame`] Second data.frame to join.
`by` | [`character`] Column name(s) of variables used to match rows in `x` and `y`. If not provided, a heuristic similar to the one described in the dplyr vignette is used: If `x` is keyed, the existing key will be used if `y` has the same column(s). If `x` is not keyed, the intersect of common columns names is used if not empty. Raise an exception. You may pass a named character vector to merge on columns with different names in `x` and `y`: `by = c("x.id" = "y.id")` will match `x`'s “x.id” column with `y`\'s “y.id” column.
`all.y` | [logical(1)] Keep columns of `y` which are not in `x`?

### Value

[`data.table`] with key identical to `by`.

### Examples

    # Create two tables for demonstration
    tmp = makeRegistry(file.dir = NA, make.default = FALSE)
    batchMap(identity, x = 1:6, reg = tmp)
    x = getJobPars(reg = tmp)
    y = findJobs(x >= 2 & x <= 5, reg = tmp)
    y$extra.col = head(letters, nrow(y))

    # Inner join: similar to intersect(): keep all columns of x and y with common matches
    ijoin(x, y)

    # Left join: use all ids from x, keep all columns of x and y
    ljoin(x, y)

    # Right join: use all ids from y, keep all columns of x and y
    rjoin(x, y)

    # Outer join: similar to union(): keep all columns of x and y with matches in x or y
    ojoin(x, y)

    # Semi join: filter x with matches in y
    sjoin(x, y)

    # Anti join: filter x with matches not in y
    ajoin(x, y)

    # Updating join: Replace values in x with values in y
    ujoin(x, y)

[Package batchtools version 0.9.11 Index]