概要
tidyr
パッケージに含まれるunchop()
は、List型の列を展開する関数です。逆操作を行うchop()
が存在します。
関連ページ
関数
unchop(df, cols, keep_empty = FALSE, ptype = NULL)
引数 | 説明 |
---|---|
df | データフレーム |
cols | List型の列を指定する |
keep_empty | List型の中身が空の行を残す場合はTRUEを指定する |
ptype | Listを展開した列の型を指定する |
使い方
解説用データフレーム
df <- tibble::tibble(
x1 = c('A', 'B', 'C', 'D'),
x2 = list(c(1,2,3), c(1,2), c(1), c())
)
> df
# A tibble: 4 x 2
x1 x2
<chr> <list>
1 A <dbl [3]>
2 B <dbl [2]>
3 C <dbl [1]>
4 D <NULL>
1.List型の展開
# List型の列x2を展開する
unchop(df, cols = x2)
# A tibble: 6 x 2
x1 x2
<chr> <dbl>
1 A 1
2 A 2
3 A 3
4 B 1
5 B 2
6 C 1
2.オプション
2-1.空の行を残す
# List型の列x2を展開し、空の行を残す
unchop(df, cols = x2, keep_empty = TRUE)
# A tibble: 7 x 2
x1 x2
<chr> <dbl>
1 A 1
2 A 2
3 A 3
4 B 1
5 B 2
6 C 1
7 D NA
2-2.展開後の型を変換する
# List型の列x2を展開し、文字列型に変換する
unchop(df, cols = x2, ptype = tibble(x2 = character()))
# A tibble: 6 x 2
x1 x2
<chr> <chr>
1 A 1
2 A 2
3 A 3
4 B 1
5 B 2
6 C 1