列の結合(フィルタリング)

概要

dplyrパッケージに含まれるsemi_join(), anti_join()は、フィルタリングに特化した列の結合を行う関数です。同じ列の結合を行う関数にはinner_join(), left_join(), right_join(), full_join(), nest_join()が存在します。

関連ページ

関数

semi_join(x, y, by = NULL, copy = FALSE)
anti_join(x, y, by = NULL, copy = FALSE)
引数説明
x, yデータフレーム
by結合に用いる列名を指定
copy

使い方

解説用データフレーム

df.x <- tibble(
  x1 = c('A', 'B', 'C'),
  x2 = c(1, 2, 3),
)

df.y <- tibble(
  y1 = c('A', 'B', 'D'),
  y2 = c(1, 2, 4),
)
> df.x
# A tibble: 3 x 2
  x1       x2
  <chr> <dbl>
1 A         1
2 B         2
3 C         3

> df.y
# A tibble: 3 x 2
  y1       y2
  <chr> <dbl>
1 A         1
2 B         2
3 D         4

1.列の結合

1-1.一致する値の取得

# df.xを対象に、df.xの列x1とdf.yの列y1の共通集合を取得する
semi_join(df.x, df.y, by = c('x1' = 'y1'))
# A tibble: 2 x 2
  x1       x2
  <chr> <dbl>
1 A         1
2 B         2

1-2.一致しない値を取得

# df.xを対象に、df.xの列x1とdf.yの列y1の補集合を取得する
anti_join(df.x, df.y, by = c('x1' = 'y1'))
# A tibble: 2 x 2
  x1       x2
  <chr> <dbl>
1 C         3
Sponsored Link