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