join: Join two data frames together

Description Usage Arguments Value Examples

View source: R/join.R

Description

Join two data frames together

Usage

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
join(
  x,
  y,
  kind,
  on = intersect(names(x), names(y)),
  suffixes = c(".x", ".y"),
  check = m ~ m,
  gen = FALSE,
  inplace = FALSE,
  update = FALSE,
  type
)

Arguments

x

The master data.frame

y

The using data.frame

kind

The kind of (SQL) join among "full" (default), "left", "right", "inner", "semi", "anti" and "cross".

on

Character vectors specifying variables to match on. Default to common names between x and y.

suffixes

A character vector of length 2 specifying suffix of overlapping columns. Defaut to ".x" and ".y".

check

A formula checking for the presence of duplicates. Specifying 1~m (resp m~1, 1~1) checks that joined variables uniquely identify observations in x (resp y, both).

gen

Name of new variable to mark result, or the boolean FALSE (default) if no such variable should be created. The variable equals 1 for rows in master only, 2 for rows in using only, 3 for matched rows.

inplace

A boolean. In case "kind"= "left" and RHS of check is 1, the merge can be one in-place.

update

A boolean. For common variables in x and y not specified in "on", replace missing observations by the non missing observations in y.

type

Deprecated

Value

A data.frame that joins rows in master and using datases. Importantly, if x or y are not keyed, the join may change their row orders.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
library(dplyr)
x <- data.frame(a = rep(1:2, each = 3), b=1:6)
y <- data.frame(a = 0:1, bb = 10:11)
join(x, y, kind = "full")
join(x, y, kind = "left", gen = "_merge")
join(x, y, kind = "right", gen = "_merge")
join(x, y, kind = "inner", check = m~1)
join(x, y, kind = "semi")
join(x, y, kind = "anti")
y <- rename(y, b = bb)
join(x, y, kind = "full", on = "a")
join(x, y, kind = "full", on = "a", suffixes = c("",".i"))
y <- data.frame(a = 0:1, bb = 10:11)
join(x, y, kind = "left", check = m~1)
x <- data.frame(a = c(1,2), b=c(NA, 2))
y <- data.frame(a = c(1,2), b = 10:11)
join(x, y, kind = "left", on = "a",  update = TRUE)
join(x, y, kind = "left", on = "a", check = m~1,  update = TRUE)

statar documentation built on Jan. 13, 2021, 9:33 p.m.