今回はRでデータ処理を効率的に行うのを手助けしてくれるパッケージの一つであるdplyrパッケージの使い方を紹介していきます。この記事ではざっくりとした説明で、詳しく知りたい方はこちらの本に書いてあるので是非どうぞ
パッケージのインストールと読み込み
>install.packages(“dplyr”)
>library(dplyr)
> head(ToothGrowth)
len supp dose
1 4.2 VC 0.5
2 11.5 VC 0.5
3 7.3 VC 0.5
4 5.8 VC 0.5
5 6.4 VC 0.5
6 10.0 VC 0.5
>?オブジェクト名で確認すると、このデータは60匹のネズミにビタミンCを与えた場合の歯の長さを図ったデータだそうです。
条件を満たすものの抽出
> ToothGrowth[ToothGrowth$supp==”OJ”,]
len supp dose
31 15.2 OJ 0.5
32 21.5 OJ 0.5
33 17.6 OJ 0.5
34 9.7 OJ 0.5
…
他にもsubset()を使って抽出する方法もあります。subsetの場合は
>subset(ToothGrowth,supp==”OJ”)
まあ単一条件の場合ならこの書き方でもいいのですが、もし、性別が女で身長が160以下で体重が50kg以下みたいな複数条件で抽出したい場合は、この書き方だととても汚くなってしまいます。
そのため複数条件で抜き出すときは%>%演算子を使うのがオススメです。パイプ処理というやつです。
>ToothGrowth %>% filter(supp == “OJ”) %>% head()
・ filter()
また列の数値が〇〇以上などの指定した条件で抽出をかけたい場合は filter()が有効です。長さが25以上でdoseが1以上のデータを抽出したい時はこんな感じです。
>ToothGrowth %>% filter(length > 25, dose == 1)
・mutate()
データフレーム内の値を操作したいときはmutateを使います。mutateで新たに列を追加することができます。今回はlengthの長さをインチ表記にしたlen2という列を新たに作ります。
> ToothGrowth %>% mutate(len2 = length * 0.039) %>% head()
またデータを上書きしたいとき、dplyrでは%<>%演算子で上書きが可能となります。
>library(magrittr)
>ToothGrowth %<>% mutate(len = length * 0.039) %>% head()
dplyrには他にも、arrannge()やgroupby()など便利な関数がたくさんあります、dplyrについては使う機会があればまたメモします。
追記:Rで株価や決算書のデータを処理・分析したい方はこちらの本がとてもオススメです。
コメント