概要
tidyr
パッケージに含まれるextract()
は、指定した列の値を分解する関数です。
関連ページ
関数
extract(
data,
col,
into,
regex = "([[:alnum:]]+)",
remove = TRUE,
convert = FALSE,
)
引数 | 指定 | 説明 |
---|---|---|
data | 必須 | データフレーム |
col | 必須 | 分解したい値を持つ列名を指定する |
into | 必須 | 分解後の値を格納する列名を指定する |
regex | 任意 | 元の列の正規表現を指定する 分解して取得したい値を (...) で囲います |
remove | 任意 | 結合前の値を削除したくない場合は FALSE を指定する |
convert | 任意 | 分解後の列を適切な型に変換したい場合は TRUE を指定する |
使い方
解説用データフレーム
df <- tibble(
x1 = c('A_1', 'B_2', '3'),
)
> df
# A tibble: 3 x 1
x1
<chr>
1 A_1
2 B_2
3 3
1.値の分解
1-1.正規表現
元の列が指定した正規表現と一致しない場合は、分解後の全ての列にNAが格納されます。
# 文字と数値の組み合わせを"_"で分割する正規表現
regex = '([[:alnum:]]+)_([[:alnum:]]+)'
# 列x1を指定した正規表現に従い列y1, y2に分解する
df %>% extract(col = x1, into = c('y1', 'y2'), regex = regex)
# A tibble: 3 x 2
y1 y2
<chr> <chr>
1 A 1
2 B 2
3 NA NA
2.オプション
2-1.分解前の値を保持する
# 列x1を指定した正規表現に従い列y1, y2に分解する
df %>% extract(col = x1, into = c('y1', 'y2'), regex = regex, remove = FALSE)
# A tibble: 3 x 3
x1 y1 y2
<chr> <chr> <chr>
1 A_1 A 1
2 A_2 B 2
3 3 NA NA
2-2.分解後の型を変換する
# 列x1を指定した正規表現に従い列y1, y2に分解して、分解後の列を適切な型に変換する
df %>% extract(col = x1, into = c('y1', 'y2'), regex = regex, convert = TRUE)
# A tibble: 3 x 2
y1 y2
<chr> <dbl>
1 A 1
2 B 2
3 NA NA