NTTコミュニケーションズ Advent Calendar 2020 16日目の記事です。
はじめに
こんにちは、@flatyです。普段はNTTコミュニケーションズでデータ分析まわりのお仕事をしてます。
自分が所属するチームではPython(Jupyter)やTableauなど様々な環境で分析できるのですが、個人的にはRを使って分析することが多いです。R Markdownによるレポート作成が便利であるのと、IDE(統合開発環境)であるRStudioが使いやすいという2点が大きい理由です。(tidyverseによるデータハンドリングや可視化に慣れているというのもあります)
本記事では、Rを使って分析する方の参考になるよう、R MarkdownとRStudioの個人的なtipsをまとめようと思います。
ざっくり言うと以下です
- R Markdown:
code_folding: hide
と.tabset
が便利 - RStudio: Markdownの見出し表示が便利、Excelっぽくデータを眺められるのも便利
余談
本当は入門tip的な感じで書こうとしてたのですが、ちょうど先週@Ringa_hyjさんが「2021年からRを始める人へ「R&R studio」初期tips」という素晴らしい記事を書かれていたので、個人的tipに方向修正しました。R&R studio使ったことないという方はそちらに目を通してから本記事を見るとわかりやすいかもです。
R Markdown
R Markdownは名前の通りRとMardownを合わせた形式で、Markdownによる簡単なドキュメント作成とRによるデータ分析を同時に行うことができます。Jupyterを使ってる方はnotebook形式をイメージしてもらえばわかりやすいと思います。
Jupyterだとcellを追加し、cellのタイプをcodeかmarkdownか選択してcodeとmarkdownを区別していますが、R Markdownでは基本がMarkdownで、そこにcode block(chunk)を追加する形となります。(この違いは慣れの問題だと思います)
html document
R Markdownのメリットは簡単にドキュメントを生成できることにあります。pdfファイル等も生成できますが、html形式で生成するのがオススメです。
特にcode_foldingを設定することによってcodeを必要な時にだけ見られるようにできたり、tabsetをすることによって縦長になってしまうレポートをすっきりまとめることができるのがお気に入りです。
以下のR Markdownのsampleを元に解説していきます。
---
title: "NTT Communications Advent Calender 2020"
author: "flaty"
date: '`r format(Sys.time(), "%y/%m/%d %H:%M")`'
output:
html_document:
md_extensions: -ascii_identifiers
#number_sections: true
#fig_caption: true
toc: true
#toc_float: true
code_folding: hide
theme: lumen
highlight: pygments
---
# H1 {.tabset .tabset-fade .tabset-pills}
test
## H2
``{r, message=FALSE}
library(tidyverse)
``
yamlヘッダ
上のsampleでいうとtitleからhighlightまでの---
で囲まれている箇所です。
こちらに全体的な設定を記述してあげます。詳しくはこちらの公式ドキュメントを参考にしてもらえればと思います。(自分はtitle以外の箇所をコピペして使い回してます。)
tipsとしては、
- dateの箇所を上のように書くことで自動でdocument作成日時が反映される
- 使ったり使わなかったりする設定はコメントアウトで対応できる
-
code_folding: hide
とすることでhtml documentのcode blockを折りたためる- 詳しい人にはcodeを見せながら説明
- そうじゃない人にはcodeを隠して説明みたいな使い分けができる
- 見た目もすっきりする
-
theme
で全体のテーマを、highlight
でcode blockの色を設定できる
といった感じです。
chunk(code block)
上のsampleでいうと最後の```{r} ~ ```となっている箇所です。(Qiita自体がMarkdownでおかしくなってしまったのでsampleは ` を2つにしてます。)
オプションも色々指定できます。詳しくは公式ドキュメントをご覧ください。
Markdown
yamlヘッダとchunk以外の箇所はMarkdownです。tipsとしては、# H1 {.tabset .tabset-fade .tabset-pills}
のようにtabsetオプションを入れることによって、1つ下のHeadersをtabで階層化することができます。sampleだと#
にtabsetがついているので、##
のHeadersが階層化されることにます。
この後紹介するHeads or TailsさんのR Markdown documentを見ると効果を実感できると思います。
応用例
個人的にはkaggle Notebooks GrandmasterのHeads or TailsさんのR Markdown documentを参考にしています。
一番投票数(votes)の多いこちらのR Markdown documentなどは、kaggleやってなくても一見の価値ありです!
RStudio
RStudioはRのIDE(統合開発環境)です。最近はPythonも使えるようになってきています。
UIは以下のように、左上のエディタ部分でR MarkdownやRのコードを編集し、左下のコンソールでコード実行する感じになってます。個人的に便利だと感じる点は、R Markdownを編集する際に見出し(Headers)一覧を表示できることと、Environment部分でデータを簡単に把握できることです。
R Markdownの見出し表示
下の図の黄色い丸の箇所を押すと赤枠のように見出し(Headers)一覧を表示できます。どこでなにをしてるのかぱっと見でわかるので、長めのR Markdownを編集する際は地味ですが重宝してる機能です。
Environment部分でのデータ確認
(RStudio使ってる方はかなりの割合で知ってると思いますが、)
右上のEnvironment部分でオブジェクト一覧を確認できます。Dataframeだと、わざわざdim()
などしなくてもサイズを確認することができ便利です。
さらに、Dataframeのオブジェクトをクリックすることで、Excelのようにデータを眺めることが可能です。
個人的にデータ全体を可能な範囲で眺めるのはデータを理解していく上で非常に重要だと感じてます。実際、機械的な処理だと気づけない問題に気づけたりした経験は数え切れないです。
おわりに
今回はR MarkdownとRStudioの個人的なtipsをまとめました。R MarkdownやRStudioを使ったことない方にも興味を持ってもらえると幸いです。
Enjoy!