自在に操る

データの選択 | 列の選択

2021年5月30日

概要

  • 列の選択はdplyr::select()が便利
  • 古典的な方法として[ ]を使う方法もある
  • select関数を使う時はヘルパー関数の活用が重要

イメージ

この記事で紹介する列の選択は下の画像のような操作です。

dplyr::select()で選択

列の選択をする時は基本的にdplyrパッケージのselect関数を使うのがお勧めです。select 関数の使い方は以下の通りです。

# dplyrパッケージの準備
library(dplyr)
# select関数の使い方
select(データフレーム, 列名1, 列名2, ,,,)

今回紹介するselect関数はdplyrパッケージの関数なので最初にlibrary(dplyr)でdplyrパッケージを呼び出す必要があります。select関数自体の使い方は簡単で、第1引数に操作したいデータフレームを指定し、第2引数以降に選択したい列の列名を列挙します。

具体例

具体例としてirisデータから列を選択する方法を考えてみたいと思います。

今回はirisデータから Species 列と Sepal.Length 列を選択して取り出す場合のコードを紹介します。

library(dplyr)
select(iris, Species, Sepal.Length)
#>        Species  Sepal.Length
#> 1       setosa          5.1
#> 2       setosa          4.9
#> 3       setosa          4.7

上のコードのように第1引数に対象のデータ(今回はiris)、第2引数以降に欲しい列名(今回は Species, Sepal.Length)を列挙すれば取ってこれます。

古典的な方法

パッケージを使わない方法に[ ]を使う方法があります。select関数の方が使い勝手が良いですが、列数が非常に多い場合などはこちらの方が早い場合もあります

使い方は以下の通りです。

データフレーム[ , c("列名1", "列名2", ,,,)]

対象のデータフレーム名に[ ]を繋げて、[ ]の中の第2引数に列名を文字列として指定(ダブルクォーテーションで囲って指定)すれば、列を取得することができます。

ちなみに[ ]の第1引数は行を指定する時に使います。今回は特に行の指定は実施せず、全ての行を取り出す操作を実施しています。

この方法では特別なパッケージは使わないのでライブラリを呼ぶ必要はありません。

具体例

具体例としてselect関数の時と同様に、irisデータから列を選択する方法を考えてみたいと思います。select関数の時の具体例と同じ操作を古典的な方法でおこなう場合のコードは以下の通りです。

iris[, c("Species", "Sepal.Length")]
#>        Species  Sepal.Length
#> 1       setosa          5.1
#> 2       setosa          4.9
#> 3       setosa          4.7

dplyr::selectの強み

select関数の強みはなんと言ってもヘルパー関数が充実していることだと思います。ヘルパー関数を使うことで欲しい列の指定が簡単になります。

ヘルパー関数には以下のようなものがあります。

関数機能具体例
starts_with()列名の頭にある共通の文字列を認識させて選択名前が「Sepal」で始まる列を選択
ends_with()列名の後ろにある共通の文字列を認識させて選択名前が「Length」で終わる列を選択
contains()指定した文字列が含まれる列を選択名前に「S」を含む列を選択
matches()正規表現を使って列名を指定して選択正規表現で指定できるものなら何でも
num_range()通し番号がある列名に対して特定の番号範囲で選択「ID1」から「ID10」までの列を選択
where()関数を指定して、その関数がTRUEを返す列を選択数値型の列を全て選択
everything()すべての列を選択すべての列を選択

このヘルパー関数があることによってコードの記述が楽になり、可読性も高くなります。

-自在に操る