第5章 tidyverse(dplyr)で再現 ・ ノック 64 / 100 ・ [[000 - はじめに(使い方と目次)|目次]]<br>
← 前 [[063 - 列を選ぶ]] ・ 次 → [[065 - 並べ替える]]
> [!info] mutate() は「新しい列を追加する」動詞です
> **`mutate()`**(ミューテート)は、既存の列をもとに計算した結果を新しい列として追加する動詞です。たとえば「がく片の長さ÷幅」を計算して `ratio` という列を新たに作れます。元のデータフレームはそのまま残り、列が一つ増えた新しいデータフレームが返ってきます。
>
> Rベースでは `iris$ratio <- iris$Sepal.Length / iris$Sepal.Width` のように `
を使って新しい列を代入していました。`mutate()` では `
なしで列名だけを書けるので読みやすくなります。
## 問題
`iris` に `ratio`(= Sepal.Length ÷ Sepal.Width)という列を追加し、関係する列だけ先頭3行を表示してみましょう。
> [!tip] ヒント
> `mutate(iris, ratio = Sepal.Length / Sepal.Width)` で新しい列が追加されます。その後 `select()` や `head()` で絞ると見やすくなります。
> [!success]- 回答を見る
> ```r
> library(dplyr)
> mutate(iris, ratio = Sepal.Length / Sepal.Width) |>
> select(Sepal.Length, Sepal.Width, ratio) |>
> head(3)
> ```
> ```
> Sepal.Length Sepal.Width ratio
> 1 5.1 3.5 1.457143
> 2 4.9 3.0 1.633333
> 3 4.7 3.2 1.468750
> ```
> Rベースでは `iris$ratio <- iris$Sepal.Length / iris$Sepal.Width` と代入していましたが、`mutate()` を使うと元のデータを変えずに新しい列を追加した結果を返してくれます。