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 ...

関連する記事

  • 地図で見る石川県白山市の人口 2013年12月版地図で見る石川県白山市の人口 2013年12月版 白山市役所が公開している平成25年12月末日の住民基本台帳人口と総務省統計局が公開している地図データを基に人口、人口密度、世帯数などの数値および前年同月からの増減率を地図上に色分けして視覚化したものと上位・下位のランキングをご紹介する。 人口の上位・下位ランキング […]
  • DockerとVS Code Remote ContainersでAngularの開発環境を構築する方法DockerとVS Code Remote ContainersでAngularの開発環境を構築する方法 DockerとVS Code、VS Codeに拡張機能Remote Containersを用いてAngularの開発環境を構築する方法をお伝えします。 DockerおよびDocker Compose、VS Code、VS Codeの拡張機能Remote […]
  • MINTELのGNPDから出力されたCSVの文字化けの対処法 ミンテルGNPD(世界新商品情報データベース)から出力されたCSVが文字化けしている場合の対処法を備忘録として残しておきます。 Windowsパソコンにダウンロードかつ英文のみ ここでの対応は、「café」のようなアキュート・アクセントなどが文字化けしている場合の対応になります。 ubuntu上で文字コードをUTF-8に変換するにはiconvコマンドを用いて、次 […]
  • 平均的に分類する方法の考察(2)平均的に分類する方法の考察(2) 前回は、100人の学生のスコアを求めて、スコアの昇順に3つのグループに振り分ける方法を試した。振り分け方は、単純に、3つのグループに属する学生の少ないほうからである。前回の終わりに、各インデックスの平均値を考慮したものを考えてみると書いたが、その前に、一つ確認しておかなければならないことを忘れていたので、今回はその確認をしようと思う。 何を確認し忘れたかというと、全体の […]
  • R スティール(Steel)法R スティール(Steel)法 スティール(Steel)法とは、ダネット(Dunnett)法の多重比較に対応するノンパラメトリックな多重比較である。 スティール法を簡単に言うと、正規分布を仮定しない1つの対照群と2つ以上の処理群間を順位を用いて多重比較で調べる方法である。 Rで、スティール法を使う場合は、「スティール(Steel)の方法による多重比較」のページにソースコードが紹介されている。 […]
R データフレームから特定の型の列を抽出する方法