R Markdownで楽々レポートづくり

第5回 レポートを彩るデータ可視化 ~グラフとテーブルとダイアグラム~

この記事を読むのに必要な時間:およそ 4 分

テーブルを極める

グラフは視覚に強く訴えるインパクトのある可視化技術ですが,正確な数値を把握する用途には向きません。一方,テーブル(表)はグラフとは逆に,地味ですが正確な数値を示すのに最適な可視化技術です(テーブルを「可視化」と呼ぶのは異論もあるかもしれませんが⁠⁠。

突然ですが,問題です。あなたはレポートの中でテーブルを使いたいとき,どうやってテーブルを作りますか?

  1. Excel
  2. エクセル
  3. ゑくせる
  4. その他

1から3を選んだあなたは間違いなくコピペ汚染されていますね。そんなあなたは連載第1回を読み直してください。

R Markdownのアプローチでは,データから自動的にテーブルを作成してレポートに埋め込みます。{knitr}パッケージのkable()関数を使うのが一番簡単な方法でしょう。

# irisの先頭

```{r, echo=FALSE}
knitr::kable(head(iris))
```

次のようなテーブルが出力されます編集部注⁠。

Sepal.Length Sepal.Width Petal.Length Petal.Width Species
5.1 3.5 1.4 0.2 setosa
4.9 3.0 1.4 0.2 setosa
4.7 3.2 1.3 0.2 setosa
4.6 3.1 1.5 0.2 setosa
5.0 3.6 1.4 0.2 setosa
5.4 3.9 1.7 0.4 setosa
編集部注)
gihyo.jpのスタイルシートを当ててあります。

たった,たったこれだけで,テーブルをレポートに埋め込むことができるのです。 しかもコピペ汚染もなく,再現性も確保できます。データが更新されても,値をコピペしてテーブルを作って,レポートにまたコピペ,という作業は必要ありません。

kable()以外にも,より柔軟なテーブルの作成をサポートする{tables}パッケージがあります。ドキュメント生成本で詳しく解説されていますので参考にしてください。

JavaScriptライブラリを用いたインタラクティブなテーブル

テーブルは正確に数値を把握できる反面,データが大きい場合に見づらい,必要な数値を探すのが大変,といったデメリットもあります。さて,どうしましょう?

ここで再びJavaScriptです。HTMLレポートでは,テーブル表示を行うJavaScriptライブラリを使うことができます。何がスゴイって,なんと,レポートの中でテーブルのソートや検索ができるのです。従来のレポートでは考えられないことです。

ここではDataTablesライブラリを使うための{DT}パッケージを紹介します。mtcarsデータをテーブルで表示してみましょう。

```{r, echo=FALSE}
library(DT)
datatable(mtcars)
```

これだけです。これだけで,こちらのようなテーブルがレポートに埋め込まれます。

なんということでしょう。Searchと書かれた検索ボックスはただの飾りではありません。試しにMazdaと入力してみてください。フィルタリングです。テーブルヘッダをクリックしてみてください。ソートです。これは感動モノですね。

「レポートで,感動を」

アクセスログを整形してレポートで提出する時,実験データをフルで求められた時,レポートの中にテーブルが必要な時は,是非JavaScriptベースのテーブル作成を試してみましょう。そこには利便性とともに,感動があります。

著者プロフィール

高橋康介(たかはしこうすけ)

東京大学先端科学技術研究センター特任助教。専門は認知科学,認知心理学,認知神経科学。どうやったら人が幸せな気持ちになれるのか研究中。著書に「R言語上級ハンドブック」(分担執筆・C&R研究所),「ドキュメント・プレゼンテーション生成」(共立出版)。趣味はラテ・アート。