dplyr::mutate
dplyr::mutate
は、tidyverse コレクションの dplyr パッケージに含まれる関数で、既存のデータフレームに新しい列を追加するため、または既存の列を変更・削除するために使用 される。
クイックリファレンス
library(tidyverse)
df %>%
mutate(new_col = col1 + col2)
penguins %>%
mutate(bill_shape_ratio = bill_length_mm / bill_depth_mm)
# # A tibble: 344 × 9
# species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex year bill_shape_ratio
# <fct> <fct> <dbl> <dbl> <int> <int> <fct> <int> <dbl>
# 1 Adelie Torgersen 39.1 18.7 181 3750 male 2007 2.09
# 2 Adelie Torgersen 39.5 17.4 186 3800 female 2007 2.27
# 3 Adelie Torgersen 40.3 18 195 3250 female 2007 2.24
# 4 Adelie Torgersen NA NA NA NA NA 2007 NA
# 5 Adelie Torgersen 36.7 19.3 193 3450 female 2007 1.90
# 6 Adelie Torgersen 39.3 20.6 190 3650 male 2007 1.91
# 7 Adelie Torgersen 38.9 17.8 181 3625 female 2007 2.19
# 8 Adelie Torgersen 39.2 19.6 195 4675 male 2007 2
# 9 Adelie Torgersen 34.1 18.1 193 3475 NA 2007 1.88
# 10 Adelie Torgersen 42 20.2 190 4250 NA 2007 2.08
# # ℹ 334 more rows
# # ℹ Use `print(n = ...)` to see more rows
基本構文
mutate(
.data,
...,
.by = NULL,
.keep = c("all", "used", "unused", "none"),
.before = NULL,
.after = NULL
)
引数 | 説明 |
---|---|
.data | データフレーム(または tibble)。 |
... | 新しい列を生成したり、既存の列を変更・削除するための式。 |
.by = NULL | グループ化したい列を指定する。<tidy-select> も指定可能。 |
.keep = "all" | 既存の列を保持するかを指定する。 |
"all" - 既存のすべての列を保持する。 | |
"used" - 新しい列を生成するのに使用された列のみを保持する。 | |
"unused" - 新しい列を生成するのに使用されなかった列のみを保持する。 | |
"none" - 既存の列を保持しない。 | |
.before = NULL | 新しい列を指定した列の前に追加する。<tidy-select> も指定可能。 |
.after = NULL | 新しい列を指定した列の後に追加する。<tidy-select> も指定可能。 |
使用例
1. 新しい列 の追加
複数の列を追加したいときは、カンマで区切る。また、同じ mutate
関数内でも先に作成した列であれば、そのまま使用することができる。
penguins %>%
mutate(
bill_shape_ratio = bill_length_mm / bill_depth_mm,
is_greater_than_two = if_else(bill_shape_ratio > 2, 1, 0)
)
# # A tibble: 344 × 9
# species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g sex bill_shape_ratio is_greater_than_two
# <fct> <fct> <dbl> <dbl> <int> <int> <fct> <dbl> <dbl>
# 1 Adelie Torgersen 39.1 18.7 181 3750 male 2.09 1
# 2 Adelie Torgersen 39.5 17.4 186 3800 female 2.27 1
# 3 Adelie Torgersen 40.3 18 195 3250 female 2.24 1
# 4 Adelie Torgersen NA NA NA NA NA NA NA
# 5 Adelie Torgersen 36.7 19.3 193 3450 female 1.90 0
# 6 Adelie Torgersen 39.3 20.6 190 3650 male 1.91 0
# 7 Adelie Torgersen 38.9 17.8 181 3625 female 2.19 1
# 8 Adelie Torgersen 39.2 19.6 195 4675 male 2 0
# 9 Adelie Torgersen 34.1 18.1 193 3475 NA 1.88 0
# 10 Adelie Torgersen 42 20.2 190 4250 NA 2.08 1
# # ℹ 334 more rows
# # ℹ Use `print(n = ...)` to see more rows