Rのデータフレームから特定の型の列を抽出する方法をお伝えします。

サンプルデータとして、irisを用います。
データフレームの構造をstr関数で確認します。


> str(iris)
'data.frame':	150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

データフレームから特定の型の列を抽出するには、baseに含まれるFilter関数を用います。
Filter関数の第一引数に特定の型を確認する関数を指定し、第二引数に対象のデータフレームを指定します。

因子型の抽出

データフレームから因子型の列を抽出するには、Filter関数の第一引数にis.factor関数を指定します。
サンプルデータで因子型の列を抽出した結果は次になります。


> ext <- Filter(is.factor, iris) 
> str(ext)
'data.frame':	150 obs. of  1 variable:
 $ Species: Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

数値型の抽出

データフレームから数値型の列を抽出するには、Filter関数の第一引数にis.numeric関数を指定します。
サンプルデータで数値型の列を抽出した結果は次になります。


> ext <- Filter(is.numeric, iris) 
> str(ext)
'data.frame':	150 obs. of  4 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...

複数の型の抽出

データフレームから複数の型の列を抽出するには、Filter関数の第一引数に独自の関数を作成して指定します。
例えば、因子型と数値型の列を抽出するには、次のようなコードになります。


> ext <- Filter(function(x){any(is.factor(x), is.numeric(x))}, iris) 
> str(ext)
'data.frame':	150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...

関連する記事

  • R 関数に時間制限を設ける方法 ある処理にとても時間が掛かるため、一定時間経過後はその処理を途中で打ち切りたいときがある。 例えば、for文で、あるループだけが重いため全体として時間が掛かってしまう場合、その処理を一旦スキップしてfor文の先に処理を進めたい、などである。 ここでは、そのひとつの解決策として、関数に時間制限を設けて、一定時間経過後はその関数を強制終了するコードをご紹介する。 ただし […]
  • Ubuntu,R OpenGLを用いた3次元可視化パッケージrglのインストール方法Ubuntu,R OpenGLを用いた3次元可視化パッケージrglのインストール方法 Ubuntu上のRで、OpenGLを用いた3次元可視化パッケージであるrglをインストールする方法をお伝えする。 通常の方法で、Rにrlgパッケージをインストールしようとしても、「X11が見つからない」とエラーが出てインストールできない。 > install.packages('rgl') configure: error: X11 not […]
  • R MASSパッケージcorresp関数のエラー対処方法 RのMASSパッケージ内のcorresp関数を用いたとき、エラーに悩まされたので、皆様と共有しておく。 環境 Ubuntuのバージョン $ cat /etc/lsb-release […]
  • R スミルノフ・グラブス検定を繰り返し用いて外れ値を除去する方法 スミルノフ・グラブス検定は、正規分布を仮定した標本において、最大値または最小値が外れ値かどうか判定する検定の一つである。 外れ値を除去する際、外れ値を一つずつ検証することよりも、外れ値がすべて除去されたデータだけがほしいときもあるのではないだろうか。 ここでは、正規分布を仮定したデータからスミルノフ・グラブス検定を繰り返し用いて外れ値を除去するソースコードをご紹介する […]
  • R データフレームのファクター列を2値に変換する方法 Rのデータフレームにおいて、ファクター列を2値に変換する方法をお伝えいたします。 方法はとても単純で、データフレームの列ごとにファクター型かどうかをチェックし、ファクター型であればファクターごとに2値の列を新たに作成し追加します。 ソースコードは以下のようになります。 convertFactorToBinary <- function(df, sep = […]
R データフレームから特定の型の列を抽出する方法