DS講座 tidyverse tidyverse講座

【R前処理講座21】{dplyr} rowwise:行処理 その2【tidyverse】

こんにちは,shun(@datasciencemore)です!

今回は,前回予告したとおり,rowwiseの応用編です.
実にさまざまな処理が書けるので必見の記事となっておりますので,お楽しみに!
それでは,さっそくいろいろな応用を見ていきましょう.

今回も前回に引き続き,diamondsを使用していきます.

 

1.系列ごとに自作の関数を適用する.

まずは自分で作成した関数を格納して,系列ごとに適用してみましょう.

自作する関数は,データフレームを引数として,priceが5000以上の行を抽出する処理としましょう.
こんな感じで書けますね.

あれ?
関数の引数にデータフレームをとれるんですか??

うん,取れるよ!
オブジェクトになるものならほぼなんでも取れるよ.

例えば,データフレーム,関数,モデルなどなど.

この柔軟さがRのメリットなんだ.
慣れないと気持ち悪いかもだけど,すぐに慣れるよ~

それでは,この関数をcutでネストしたdiamondsに格納してみましょう.

ちなみに普通のオブジェクト(数値,文字列など)以外を格納するときは,listにして入れてあげてくださいね.
これ,ぼくもよく忘れちゃいます笑
忘れるとエラーが出るので,すぐに修正できますが笑

右側にfuncが追加されましたね!

この列の一つ一つに先ほど作成した「get_df_highprice」という関数が格納されています.
それでは,このfuncの関数にdataのデータフレームを引数にして適用してみましょう.

 

右側にdf_highpriceが追加されていますね.

これで,df_highpriceに格納されているデータフレームはpriceが5000以上になっています.
ほんとかよ?って気になる方はpluckを使用して,確かめてみてください.

今回の例では一つ一つの処理を見るために処理ごとに分割して書きましたが,まとめて書くこともできますよ.
というかこっちのほうが普通ですね笑

合わせて確認してくださいね.

2.系列ごとに画像を作成する.

次は,系列ごとに画像を作成しましょう.
今回もcutでネストして,それぞれのデータフレームに対して,x軸:carat,y軸:priceの散布図を作成してみましょう.

右側にfigができていますね.
この中の1つ1つにdata列に入っているデータフレームを可視化したグラフが入っているのです.

実はこれ,{patchwork}パッケージのwrap_plots関数を使うと,それぞれのグラフを並べることができますよ.
めっちゃ便利ので,覚えておいてください!

3.系列ごとにモデルを作成し,学習データを適用する.

最後に単回帰モデルの作成もやってみましょう.
今回もcutでネストして,それぞれのデータフレームに対して,説明変数:carat,目的変数:priceのモデルを作成します.
そして,作成したモデルに学習データを適用してみましょう.

モデルって何??って方はこの章を飛ばして大丈夫です.

 

modelとpred_trainができました.

このモデルをデータフレームに入れられることは,めっちゃ便利でその便利さは文章では表せません笑

ぼくが知っている限りPythonだとできなかったと思います.


皆さまもぜひぜひ体験して素晴らしさを味わってみてください!

まとめ

今回は,rowwiseの応用ということで以下の3点を紹介しました.

  1. 系列ごとに自作関数を適用する.
  2. 系列ごとにグラフを作成する.
  3. 系列ごとにモデルを作成し,学習データを適用する.

どれも頻出なので,ぜひマスターしてください.
rowwiseを使いこなせるようになると前処理が非常に楽になりますよ♪

それじゃ,お疲れさまでした!!

-DS講座, tidyverse, tidyverse講座