概要
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
 
 
  
