列の選択(ヘルパー関数)

概要

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を指定する
perlmatches()で使用する引数
Perl 互換の正規表現を使用する場合はTRUEを指定
prefixnum_range()で使用する引数
列名の接頭辞を指定する
rangenum_range()で使用する引数
列名の接尾辞(数字)を指定する
widthnum_range()で使用する引数
列名の接尾辞(数字)の桁数を指定する
x変数による指定で使用する引数
列名を変数または文字列で指定する
offsetlast_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
Sponsored Link