統計プログラムRの勉強日記

Rに関して勉強してきたことを紹介します

【R】列の中身を編集する方法|mutate関数

mutateタイトル図

はじめに

今回は列の中身を編集する関数であるmutate関数の使い方を紹介します。データフレームの列を追加したり、編集したりするときに便利な関数なのでぜひ覚えて列の操作をスムーズに行えるようになってください。

使い方

mutate関数はdplyrパッケージに含まれる関数で列の編集をする関数です。指定する列名がデータフレームに含まれていない列名であれば新しい列を追加し、データフレームにすでに存在する列名であればその列を上書きすることができます。基本的な使い方は以下の通りです。

library(dplyr)
mutate(データ、 列名 = 列の中身)
  • データ:列を操作したいデータフレーム
  • 列名:列を追加する場合新しい列名、列を編集する場合は編集したい列名
  • 列の中身:列の中身になるベクトル

具体例

今回はdatasetsパッケージのirisデータを用いて列の編集をやってみたいと思います。

新しく列を追加する場合

まずは列を追加する場合のコードを紹介したいと思います。列を新しく追加する場合は第2引数で指定する列名をデータフレームに無い列名にする必要があります。
今回はirisデータに対して Sepal.Length と Petal.Length の差を求めて新しい列 Length.Diff を追加するコードを紹介したいと思います。

library(dplyr)
data = iris
mutate(data, Length.Diff = Sepal.Length - Petal.Length) 

出力される結果の先頭10行はこんな感じになります。(クリックで表示)

Sepal.Length Sepal.Width Petal.Length Petal.Width Species Length.Diff
5.1 3.5 1.4 0.2 setosa 3.7
4.9 3 1.4 0.2 setosa 3.5
4.7 3.2 1.3 0.2 setosa 3.4
4.6 3.1 1.5 0.2 setosa 3.1
5 3.6 1.4 0.2 setosa 3.6
5.4 3.9 1.7 0.4 setosa 3.7
4.6 3.4 1.4 0.3 setosa 3.2
5 3.4 1.5 0.2 setosa 3.5
4.4 2.9 1.4 0.2 setosa 3
4.9 3.1 1.5 0.1 setosa 3.4

一番右端に新しい列として Length.Diff という列が追加されていて、Sepal.Length - Petal.Length の計算結果となっているのが確認できると思います。このように新しい列を追加する場合はデータフレームの一番右端に列が追加されます。

すでにある列を編集する場合

すでにある列を編集する場合は、第2引数に「編集したい列名 = 編集後の列の内容」を指定します。
今回はirisデータの Species 列を編集し、種名の前に 「iris」という文字列をくっつけるコードを紹介したいと思います。

library(dplyr)
data = iris
mutate(data, Species = paste("iris", Species))

出力される結果の先頭10行はこんな感じになります。(クリックで表示)

Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 iris setosa
4.9 3 1.4 0.2 iris setosa
4.7 3.2 1.3 0.2 iris setosa
4.6 3.1 1.5 0.2 iris setosa
5 3.6 1.4 0.2 iris setosa
5.4 3.9 1.7 0.4 iris setosa
4.6 3.4 1.4 0.3 iris setosa
5 3.4 1.5 0.2 iris setosa
4.4 2.9 1.4 0.2 iris setosa
4.9 3.1 1.5 0.1 iris setosa

この時、列を新しく追加する時とは異なり列の順番は変わりません

まとめ

今回は列の編集をおこなう関数であるmutate関数を紹介しました。列の追加や編集ができるようになるとRでデータ整理をするのが格段に楽になります。ぜひ使いこなせるようになってください。