Rで型の変更をしたいけれど、どうすればいいのかわからない
変数の型を一括で変更する方法を知りたい!
これらのお悩みを解決します。
この記事で説明していること
・型を確認する方法
・型を変更する方法
(補足)Rでヘルプを見る方法
上記について説明しています。
今回使用するデータ
ggplot2パッケージに入っている"mpg"のデータセットを使って説明します。
ggplot2はtidyverseパッケージで開いておきましょう。tidyverseパッケージをまだインストールしていない方は、インストールから始めてくださいね!
install.packages("tidyverse") #インストール済みの人はスルーしてください
library(tidyverse)
mpgデータセットについて
mpgは、1999年と2008年における自動車の燃費のデータで、11変数234行からなるデータフレームです。
本記事では黒字が入力コード、青字がRからの出力を示しています。
head(mpg) # mpgデータセットの先頭6行を確認する
> head(mpg)
# A tibble: 6 × 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p comp…
2 audi a4 1.8 1999 4 manual(… f 21 29 p comp…
3 audi a4 2 2008 4 manual(… f 20 31 p comp…
4 audi a4 2 2008 4 auto(av) f 21 30 p comp…
5 audi a4 2.8 1999 6 auto(l5) f 16 26 p comp…
6 audi a4 2.8 1999 6 manual(… f 18 26 p comp…
変数は以下の11変数です。
manufacturer:車のメーカー
model : モデルの名前
displ: 排気量
year : 年式
cyl : シリンダー数(何気筒か)
trans: トランスミッションの種類(オートマとかMTとか)
drv : 駆動タイプ(f: 前輪駆動, r: 後輪駆動, 4: 4WD)
cry : 市街地の燃費
hwy : 高速道路での燃費
fl : 燃料のタイプ
class: 車のタイプ(コンパクトとか2シーターとか)
こういった補足情報は、R上でヘルプを開けば見ることができます。
(補足)ヘルプの見方
RStudioの場合、mpgの前に?を付けて実行すると、画面右下のペイン(デフォルト設定の場合)に出てきます。mpgにカーソルを持って行って、F1を押して見ることも可能です。
# mpgのヘルプを見る
?mpg
変数の型を確認する
mpgの変数の型を確認していきます。
1変数の型を確認する
任意の1変数の型は、class関数を使えば確認することができます。
mpgのmanufacturerの型を知りたい場合は以下のように入力します。
class(mpg$manufacturer)
> class(mpg$manufacturer)
[1] "character"
manufacturerは文字列型(character)になっていることを確認できましたね!
データフレーム内のすべての変数の型を確認する
データフレームのすべての変数に対して変数の型を見たい場合は、str関数を使います。
str(mpg)
> str(mpg)
tibble [234 × 11] (S3: tbl_df/tbl/data.frame)
$ manufacturer: chr [1:234] "audi" "audi" "audi" "audi" ...
$ model : chr [1:234] "a4" "a4" "a4" "a4" ...
$ displ : num [1:234] 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
$ year : int [1:234] 1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
$ cyl : int [1:234] 4 4 4 4 6 6 6 4 4 4 ...
$ trans : chr [1:234] "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
$ drv : chr [1:234] "f" "f" "f" "f" ...
$ cty : int [1:234] 18 21 20 21 16 18 18 18 16 20 ...
$ hwy : int [1:234] 29 29 31 30 26 26 27 26 25 28 ...
$ fl : chr [1:234] "p" "p" "p" "p" ...
$ class : chr [1:234] "compact" "compact" "compact" "compact" ...
str関数以外に、sapply関数を使ったりする方法がありますが、str関数を使うとデータの構造やfactor型の水準名が把握できて便利なのでstr関数を紹介しています。
ちなみにstructureのstrから来ています。Rオブジェクトがどういう構造から成っているかを見る関数です。
変数の型を変更する
変数の型を変更していきます。
基本の型変更:1変数のみ型を変更する
mpgデータセットの"manufacturer"について、文字列型(chr)からファクター型(factor)に変更してみましょう。使う関数は、as.factor関数です。
mpg$manufacturer <- as.factor(mpg$manufacturer) #型をfactor型に変更する
class(mpg$manufacturer) #変更されたか確認
> mpg$manufacturer <- as.factor(mpg$manufacturer)
> class(mpg$manufacturer)
[1] "factor"
変数manufacturerの型がfactor型に変更されました。
factor以外の型に変更する場合は、以下の関数を使います。
数値型:as.numeric
論理型:as.logical
文字列型:as.character
整数型:as.integer
一括で型を変更する
mpgで文字列型になっている、cyl(シリンダー数)、year(年式)、class(車の種類)、fl(燃料の種類)について、lapply関数で一括でファクター型に変更します。
# 型を変更したい変数をvarに入れる
var <- c("cyl", "year", "class", "fl")
mpg[, var] <- lapply(mpg[,var], as.factor) #一括で型を変更
str(mpg) #型変更できた確認
> mpg[, var] <- lapply(mpg[,var], as.factor)
> str(mpg)
tibble [234 × 11] (S3: tbl_df/tbl/data.frame)
$ manufacturer: Factor w/ 15 levels "audi","chevrolet",..: 1 1 1 1 1 1 1 1 1 1 ...
$ model : chr [1:234] "a4" "a4" "a4" "a4" ...
$ displ : num [1:234] 1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
$ year : Factor w/ 2 levels "1999","2008": 1 1 2 2 1 1 2 1 1 2 ...
$ cyl : Factor w/ 4 levels "4","5","6","8": 1 1 1 1 3 3 3 1 1 1 ...
$ trans : chr [1:234] "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
$ drv : chr [1:234] "f" "f" "f" "f" ...
$ cty : int [1:234] 18 21 20 21 16 18 18 18 16 20 ...
$ hwy : int [1:234] 29 29 31 30 26 26 27 26 25 28 ...
$ fl : Factor w/ 5 levels "c","d","e","p",..: 4 4 4 4 4 4 4 4 4 4 ...
$ class : Factor w/ 7 levels "2seater","compact",..: 2 2 2 2 2 2 2 2 2 2 ...
文字列型になっていたyear, cyl, fl, classを、一撃でfactor型に変更することができました!
まとめ:型の確認はstr関数、一括変更はsapply関数で!
今回はRの型確認と、型の一括変更の方法について紹介しました。
上記の方法で型の確認&変更することができます。
私は型の一括変更の方法をずっと知らず、「そういうものなのかなぁ」と思いながら律儀に1変数ずつ変更していました。独学あるあるですかね…。
この記事がRで悩んでいる人の役に立つことを祈っております。
R言語の勉強におすすめの本
今後Rの勉強をしていきたい!という方に、こちらの参考書がおすすめです。
特に、RユーザのためのRStudio実践入門は、tidyverseパッケージに特化して書かれていてとても実用的でしたのでオススメです。私自身、この本を読んでRで出来ることが一気に増えた実感のある本です。kindleで試し読みもできるのでぜひ参考にしてください。