Rでインタラクティブにピボット集計

Rでインタラクティブにピボット集計

データを手にしたとき、とりあえずデータを集計してみる、という業務はよく発生します。

データ集計ツールは世の中にたくさんあります。その中で手軽に集計するなら、Excelのピボットテーブルなどでしょう。

Excelのピボットテーブルのように手軽にお金を掛けずに、専門のデータ分析ツールでデータ集計したい、そういう要望も当然あるかと思います。

専門のデータ分析ツールと言えば、最近ですとRPythonです。どちらでも、Excelのピボットテーブルのようにインタラクティブにデータを集計するということができます。

今回は、「無料の分析ツールであるRを使ったお手軽ピボット集計方法」の1つをご紹介します。

利用するライブラリー

先ずは、利用するライブラリーのご紹介をします。

他にもあるかもしれませんが、インタラクティブにピボット集計するならという視点で考えると、以下です。

rpivotTable: A pivot table for R
https://cran.r-project.org/web/packages/rpivotTable/vignettes/rpivotTableIntroduction.html

準備

Rtools(C++ Compilerなど)をインストールされていない方は、以下からダウンロードしインストールしておいてください。

Using Rtools40 on Windows
https://cran.rstudio.com/bin/windows/Rtools/

次に、必要なパッケージをインストールしておきます。次の2つです。

  • htmlwidgets
  • rpivotTable

以下、コードです。

install.packages('htmlwidgets', 'rpivotTable')

サンプルデータ

今回は、サンプルデータとしてRにあらかじめ用意されている「warpbreaks」(織機ごとの糸の切れ目の数)のデータに対し、ピボット集計してみます。

どのようなデータなのか確かめたい場合には、以下のコードを入力し実行してください。

str(warpbreaks)

 

以下、実行結果です。

  • breaks 切れ目の数
  • wool ウールのタイプ (A or B)
  • tension 張りの強さレベル (L, M, H)

ウールのタイプ (A or B)×張りの強さレベル (L, M, H)ごとに9つの織機のデータが取得されています。そのため、レコード数は54(=6×9)です。

ピボット集計の実行

では実際にピボット集計してみます。

以下、コードです。

#パッケージの読み込み
library("rpivotTable")

#データセット
testData <- warpbreaks

#ピボット集計実行
rpivotTable(testData, width = "100%", height = "400px")

 

以下、実行結果です。

 

ブラウザ上でインタラクティブに集計していきます。

カウント

次のように、表側と表頭を設定しデータをカウントしてみます。

  • 表側 wool:ウールのタイプ (A or B)
  • 表頭 tension:張りの強さレベル (L, M, H)

 

ウールのタイプ (A or B)×張りの強さレベル (L, M, H)ごとに9つの織機のデータがあることが分かります。

平均値

次に、ウールのタイプ (A or B)×張りの強さレベル (L, M, H)ごとにbreaks(切れ目の数)の平均値を集計してみます。

 

次に、標準偏差です。

グラフ表現

ウールのタイプ (A or B)×張りの強さレベル (L, M, H)ごとにbreaks(切れ目の数)の平均値に、棒グラフを追加したピボットテーブルです。

 

次に、ヒートマップで表現し直してみます。

 

もっとたくさんの種類の集計ができます。興味のある方は、色々なデータで色々といじってみてください。

Pythonでインタラクティブにピボット集計