列の結合(ネスト化)

概要

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>

Sponsored Link