R のデータフレームで数値要素だけ抽出
データフレームの相関行列を作成するときに文字列要素が邪魔なので、
数値データ以外を除去する方法をまとめます。
dplyr パッケージを用いて
dplyr::select_if(データセット名, is.numeric)
で数値列のみを抽出できます。
今回 iris データセットを用います。
> data(iris) > head(iris, n=5) Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1 5.1 3.5 1.4 0.2 setosa 2 4.9 3.0 1.4 0.2 setosa 3 4.7 3.2 1.3 0.2 setosa 4 4.6 3.1 1.5 0.2 setosa 5 5.0 3.6 1.4 0.2 setosa
ここで、cor()
で相関行列を計算しようとしても
> cor(iris) cor(iris) でエラー: 'x' は数値でなければなりません
となりできません。
そこで、 dplyr パッケージ のselect()
を用いて、
iris データセットの文字列要素からなる Species 列以外を抽出します。
> library(dplyr) > iris.num = dplyr::select_if(iris, is.numeric) > head(iris.num, n=5) Sepal.Length Sepal.Width Petal.Length Petal.Width 1 5.1 3.5 1.4 0.2 2 4.9 3.0 1.4 0.2 3 4.7 3.2 1.3 0.2 4 4.6 3.1 1.5 0.2 5 5.0 3.6 1.4 0.2
> cor(iris.num) Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length 1.0000000 -0.1175698 0.8717538 0.8179411 Sepal.Width -0.1175698 1.0000000 -0.4284401 -0.3661259 Petal.Length 0.8717538 -0.4284401 1.0000000 0.9628654 Petal.Width 0.8179411 -0.3661259 0.9628654 1.0000000
これで OK です。