概要
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