概要
dplyrパッケージのスコープ付き関数は、元となる関数を簡潔なコードで記述できる関数です。
関連ページ
select(), rename()のスコープ付き関数filter()のスコープ付き関数arrange()のスコープ付き関数distinct()のスコープ付き関数group_by()のスコープ付き関数mutate()のスコープ付き関数transmute()のスコープ付き関数summarise()のスコープ付き関数
関数
******_all(.tbl, .funs, ...)
******_at(.tbl, .vars, .funs, ...)
******_if(.tbl, .predicate, .funs, ...)
| 引数 | 指定 | 説明 |
|---|---|---|
| .tbl | 必須 | データフレーム |
| .funs | ー | 元となる関数に応じて用途が変化する引数 |
| .vars | 必須 | ******_at()で使用する引数対象となる列を変数または文字列で指定する |
| .predicate | 必須 | ******_if()で使用する引数対象となる列を返り値がBool型の関数で指定する |
使い方
解説用データフレーム
df <- tibble(
x1 = c('A', 'B', 'C'),
x2 = c(1, 2, 3),
)
> df
# A tibble: 3 x 2
x1 x2
<chr> <dbl>
1 A 1
2 B 2
3 C 3
1.全ての列を処理する
全ての列に同じ処理を行いたい場合は******_all()を使用します。
以下のコードは、select_all()を用いて全ての列名を変更する例です。
# 'x'を'y'に置き換える関数
x2y <- function(str) str_replace(str, 'x', 'y')
# 全ての列を取得して、列名の'x'を'y'に置き換える
select_all(df, .funs = x2y)
# A tibble: 3 x 2
y1 y2
<chr> <dbl>
1 A 1
2 B 2
3 C 3
2.特定の列を処理する
2-1.変数または文字列で指定する
変数または文字列で指定した列に同じ処理を行いたい場合は******_at()を使用します。
以下のコードは、select_at()を用いて特定の列名を変更する例です。
# 列x1を取得して、列名の'x'を'y'に置き換える
select_at(df, .vars = c('x1'), .funs = x2y)
# A tibble: 3 x 1
y1
<chr>
1 A
2 B
3 C
2-2.関数で指定する
関数で指定した列に同じ処理を行いたい場合は******_if()を使用します。
以下のコードは、select_if()を用いて特定の列名を変更する例です。
# 数値型の列を取得して、列名の'x'を'y'に置き換える
select_if(df, .predicate = is.numeric, .funs = x2y)
# A tibble: 3 x 1
y2
<dbl>
1 1
2 2
3 3