tibbleの展開

概要

tidyrパッケージに含まれるunnest()は、指定したtibble型の列を展開する関数です。

関連ページ

関数

unnest(
  data,
  cols,
  keep_empty = FALSE,
  ptype = NULL,
  names_sep = NULL,
  names_repair = "check_unique"
)
引数指定説明
data必須データフレーム
cols必須展開するtibble型の列を指定する
keep_empty任意展開後の値がNULLの行を保持する場合はTRUEを指定する
ptype任意展開後の列の型を指定する
names_sep任意展開後の列名に展開前の列名を付与したい場合は接続詞を指定する
names_repair任意展開後の列名が他の列名と重複した時の挙動を指定する

使い方

解説用データフレーム

df <- tibble(
  x1 = c('A', 'B', 'C'),
  data = list(
    NULL,
    tibble(x2 = c(1)),
    tibble(x2 = c(2, 3))
  )
)
> df
# A tibble: 3 x 2
  x1        data
  <chr>   <list>
1 A       <NULL>
2 B     <tibble>
3 C     <tibble>

1.tibble型の展開

# 列dataの中身を展開する
unnest(df, cols = data)
# A tibble: 3 x 2
  x1       x2
  <chr> <dbl>
1 B         1
2 C         2
3 C         3

2.オプション

2-1.NULLの行を保持する

# 列dataの中身がNULLの行を残したまま展開する
unnest(df, cols = data, keep_empty = TRUE)
# A tibble: 4 x 2
  x1       x2
  <chr> <dbl>
1 A        NA
2 B         1
3 C         2
4 C         3

2-2.展開後の型を変換する

# 列dataの中身を展開して、列x2を文字列型に変換する
unnest(df, cols = data, ptype = tibble(data = tibble(x2 = character())))
# A tibble: 3 x 2
  x1    x2
  <chr> <chr>
1 B     1
2 C     2
3 C     3

2-3.接頭辞を追加する

# 列dataの中身を展開して、'data_'を接頭辞に追加する
unnest(df, cols = data, names_sep = '_')
# A tibble: 3 x 2
  x1    data_x2
  <chr>   <dbl>
1 B           1
2 C           2
3 C           3
Sponsored Link