DS講座 tidyverse tidyverse講座

【R前処理講座11】パイプ処理 %>%【tidyverse】

こんにちは,shun(@datasciencemore)です!
前回はtidyverseについてその概要をサクッと紹介しました.
tidyverseには全部で8つのコアパッケージがあるのですが,今回はそれらには触れないで,パイプ処理についてやっていきます.
※なぜかというとこのパイプ処理が8つのコアパッケージを扱うために必要不可欠な知識だからです.
このパイプ処理というのは何なのか,詳しく見ていきましょう!

1.パイプ処理ってなに??

パイプ処理ってなんですか??

パイプ処理っていうのは,%>%を使って処理の順番どおりにコードを記述することだよ!!
%>%っていう見慣れない文字のことをパイプって呼んでいるよ!!

???

はい,何言ってるかわかりませんね笑
パイプ処理は言葉だとチンプンカンプンですが,実際に使えばすぐにわかります.
ということで,さっそく次章で具体例についてみていきましょう!

2.パイプ処理の具体例

今回は,txhousingというデータを使用していきます.

 

さて,次のような簡単な処理について考えてみましょう.

① thhousingをインプットデータにして,city列,year列,month列,sales列を抽出する.
② ①で得られたデータフレームをインプットデータにして,sales列が100以上の行を抽出する.

この処理をパイプなしで書いた場合とパイプありで書いた場合を比較してみましょう.

 

出力は両方とも完璧に同じです.

 

出力が同じならパイプなんて使わなくていいんじゃないですか?
なんか%>%なんて文字,見慣れないから気持ち悪いし...

ソンナコトナイヨ!!
それじゃ,2つのコードを見比べてみよう!
どのような処理をしているか,コードから読み取れるかな?

次のイメージ図も見てみてください.
同じ色の対応に注目してくださいね.

あっ,明らかにパイプありのほうが見やすい!
処理の内容とコードの順番も一緒だし,インプットデータが外出しだから,見ただけで何してるか一目瞭然です.
それに比べて,パイプなしは処理内容とコードの順番が違うし,インプットデータが処理の中に入っていて,わかりづらいなぁ...

でしょでしょ!!
パイプを使用する最大の目的はコードの可読性を高めることだよ!!
%>%を見たら,心の中で「そして次の処理は~」と訳せばOKだよ!!

このパイプ処理,処理内容が複雑になればなるほど威力を発揮します.
このパイプ処理の仕組みは,

①f(x, y) ⇔ x %>% f(y)

②g(f(x, y), z) ⇔ f(x, y) %>% g(z) ,f(x, y) %>% g(z) ⇔ x %>% f(y) %>% g(z)

のように,処理の一番最初の入力をパイプを使用して,外出しにしているのです.

このおかげで,処理が上から下へ記述できるようになり,上の例でみたように可読性が高まっているのですね!

パイプ処理は便利そうだけど%>%って文字列をタイプするのはめんどいなぁと思ったそこのあなた!
ご安心ください!!
RStudioを使用していれば,以下のショートカットキーで%>%が挿入されます!
Windows:Ctrl+Shift+M
MAC  :Control + Shift + M
これでサクッとタイピングできるので,慣れると爽快で気持ちいいですよ♪

まとめ

今回はパイプ処理について学びました.
パイプを使用することで,処理の一番最初の入力を外出しにできます.
そのおかげで可読性が高まります.
これは使ってみるとわかりますが,めっちゃ便利ですよ!!
ということで,今後はいちいちパイプ処理ですなんて断らずに普通に使用していきますね笑
さっ,次回からようやくtidyverseのコアパッケージ第1弾のtibbleについてご紹介できます.
ここまで長かったですね...
これからがいよいよtidyverse講座のメインですので,引き続きよろしくお願いいたします!
それじゃ,お疲れ様でした!!

-DS講座, tidyverse, tidyverse講座