概要
dplyr
パッケージに含まれるnest_join()
は、フィルタリングに特化した列の結合を行う関数です。同じ列の結合を行う関数にはinner_join(), left_join(), right_join(), full_join(), semi_join(), anti_join()
が存在します。
関連ページ
関数
nest_join(x, y, by = NULL, copy = FALSE, keep = FALSE, name = NULL)
引数 | 説明 |
---|---|
x, y | データフレーム |
by | 結合に用いる列名を指定 |
copy | |
keep | 結合に使用した列を保存する場合はTRUEを指定する |
name | 結合したList型の列名を指定する |
使い方
解説用データフレーム
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.列の結合
# df.yの全ての値をList型にして結合する
nest_join(df.x, df.y, by = c('x1' = 'y1'))
# A tibble: 3 x 3
x1 x2 df.y
<chr> <dbl> <list>
1 A 1 <tibble>
2 B 2 <tibble>
3 C 3 <tibble>
2.オプション
2-1.List型の中身を確認する
# df.yの全ての値をList型にして結合して、List型を展開する
nest_join(df.x, df.y, by = c('x1' = 'y1')) %>%
unnest(df.y)
# A tibble: 2 x 3
x1 x2 y2
<chr> <dbl> <dbl>
1 A 1 1
2 B 2 2
2-2.結合に使用した列情報を残す
# df.yの全ての値をList型にして結合して、List型を展開する
nest_join(df.x, df.y, by = c('x1' = 'y1'), keep = TRUE) %>%
unnest(df.y)
# A tibble: 2 x 3
x1 x2 y1 y2
<chr> <chr> <dbl> <dbl>
1 A 1 A 1
2 B 2 B 2
2-3.List型の列名を変更する
# df.yの全ての値をList型にして結合する
nest_join(df.x, df.y, by = c('x1' = 'y1'), name = 'y')
# A tibble: 3 x 3
x1 x2 y
<chr> <dbl> <list>
1 A 1 <tibble>
2 B 2 <tibble>
3 C 3 <tibble>