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