読者です 読者をやめる 読者になる 読者になる

暇人の研究室

金融工学やR言語・統計学について書いてます。

<

【R言語】dplyrパッケージの使い方

 

今回はRでデータ処理を効率的に行うのを手助けしてくれるパッケージの一つであるdplyrパッケージの使い方を紹介していきます。この記事ではざっくりとした説明で、詳しく知りたい方はこちらの本に書いてあるので是非どうぞ

 

 

 

 

パッケージのインストールと読み込み

>install.packages("dplyr")

>library(dplyr)

 

 

www.dmjtmj-stock.com

 

 

内臓データの呼び出し

> 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


 

これはsuppの列でOJと書いてあるデータを抽出しろという意味になります。==は等しいを意味し、,はカンマ前が行、カンマ後が列を示しています。[行,列]というイメージです。
 
 
この場合、カンマ後を空欄にして]で閉じることでOJと書いてある列の行を全部取り出せということになります。
 
 

他にも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で株価や決算書のデータを処理・分析したい方はこちらの本がとてもオススメです。