概要
select()
とrename()
では、tidyselect
パッケージに含まれるselect helper
関数が使えます。select helper
関数を使用することでselect()
とrename()
をより簡潔に記述することができます。
関連ページ
関数
# 文字列一致
starts_with(match, ignore.case = TRUE)
ends_with(match, ignore.case = TRUE)
contains(match, ignore.case = TRUE)
matches(match, ignore.case = TRUE, perl = FALSE)
# 特殊な文字列一致
num_range(prefix, range, width = NULL)
# 変数による指定
all_of(x)
any_of(x)
# 未選択の列を指定
everything()
# 列番号による指定(降順)
last_col(offset = 0)
引数 | 説明 |
---|---|
match | 文字列一致で使用する引数 検索ワードを指定する |
ignore.case | 文字列一致で使用する引数 大文字と小文字を区別する場合はFALSEを指定する |
perl | matches() で使用する引数Perl 互換の正規表現を使用する場合はTRUEを指定 |
prefix | num_range() で使用する引数列名の接頭辞を指定する |
range | num_range() で使用する引数列名の接尾辞(数字)を指定する |
width | num_range() で使用する引数列名の接尾辞(数字)の桁数を指定する |
x | 変数による指定で使用する引数 列名を変数または文字列で指定する |
offset | last_col() で使用する引数後方から数えた列番号を指定する |
使い方
解説用データフレーム
df <- tibble::tibble(
x1 = 1,
x2 = 2,
y03 = 3,
y04 = 4,
)
> df
# A tibble: 1 x 4
x1 x2 y03 y04
<dbl> <dbl> <dbl> <dbl>
1 1 2 3 4
1.文字列一致
1-1.前方一致
# 'x'から始まる列を取得
select(df, starts_with('x'))
# A tibble: 1 x 2
x1 x2
<dbl> <dbl>
1 1 1
1-2.後方一致
# '1'で終わる列を取得
select(df, ends_with('1'))
# A tibble: 1 x 1
x1
<dbl>
1 1
1-3.部分一致
# '0'を含む列を取得
select(df, contains('0'))
# A tibble: 1 x 2
y03 y04
<dbl> <dbl>
1 3 4
1-4.正規表現
# 正規表現'x.'と一致する列を取得
select(df, matches('x.'))
# A tibble: 1 x 2
x1 x2
<dbl> <dbl>
1 1 1
2.特殊な文字列一致
# 'y'で始まり、'03'または'04'で終わる列を取得
select(df, num_range(prefix = 'y', range = 3:4, width = 2))
# A tibble: 1 x 2
y03 y04
<dbl> <dbl>
1 3 4
3.変数による指定
3-1.存在しない列を許容しない
存在しない列名を指定した場合、エラーを出力する
# 列x1, x2を取得
select(df, all_of(c('x1', 'x2')))
# A tibble: 1 x 2
x1 x2
<dbl> <dbl>
1 1 1
3-2.存在しない列を許容する
存在しない列名を指定した場合、ないものとして振る舞う
# 列x1を取得(列x3は存在しないため無視する)
select(df, any_of(c('x1', 'x3')))
# A tibble: 1 x 1
x1
<dbl>
1 1
4.未選択の列を指定
# 全ての列を取得
select(df, everything())
# A tibble: 1 x 4
x1 x2 y03 y04
<dbl> <dbl> <dbl> <dbl>
1 1 2 3 4
5.列番号による指定
5-1.昇順
# 1番最初の列を取得
select(df, 1)
# A tibble: 1 x 1
x1
<dbl>
1 1
5-2降順
# 1番最後の列を取得(0から始まる点に注意)
select(df, last_col(0))
# A tibble: 1 x 1
y04
<dbl>
1 4