IT社員3人組によるリレーブログ

某IT企業に勤める同期3人が、日常で思ったことを記録していきます (twitter: @go_mount_blog)

プログラミング言語Rって?tidyなデータ分析って?

どうも、koheiです。

スマブラでしずえさん戦!

 

さて、今日はデータサイエンス界隈でpythonに次いで使われているであろうプログラミング言語Rについて触れたいと思います。Rの成り立ちや、最近の流行りも含めて書いていきたいと思います。

  

プログラミング言語R

R logo.svg

R言語ニュージーランドオークランド大学で作られたオープンソースフリーソフトウェアの言語です。

 

データ解析・統計プログラミングが簡単にできるように開発された言語です。

 

近年は、データ解析で使われるプログラミング言語としてpythonが非常に有名ですが、このR言語も肩を並べて利用されている言語です。

 

プログラミング別平均年収ランキングは、最近pythonに抜かれてしまいしたが、

まだ上位に食い込んでいます。

 

www.itmedia.co.jp

Rのメリット&デメリット

ざっくりとまとめると次のような点が挙げられます。

 

メリット

  • もともと学術/研究用途で作られたものなので、数学・統計処理が圧倒的に強い。
  • 「パッケージ」として、世界中の研究者が開発した最新の関数や数式を簡単に利用可能。
  • グラフや結果の描画のライブラリが豊富
  • pythonなどに比べて環境構築が比較的容易
  • スクリプト言語なので、トライ&エラーをしながら対話的なデータ解析ができる
  • 言語がシンプルで学習コストは低い

デメリット

  • システムに組み込んだりするのは不向き
  • 分散処理が必要になるような大規模データ処理は不向き

 

同じデータ解析に利用されるという点で、よくpythonと比較されますが

R→試行錯誤しながら探索的なデータ解析

python→ある程度データが見えた時点で、システム導入を見据えての開発

 

といった使い分けがよく言われています。

 

Rの環境について

下記のサイトからダウンロードしてすぐ使うことができます。

The Comprehensive R Archive Network

 

またRの統合開発環境としてはRstudioが有名です。

www.rstudio.com

 

こちらもフリーで利用することができます。

f:id:go-mount:20180914142930p:plain

(Rstudio公式サイトより)

画面左側がエディター/コンソールになっており、データに対する処理を記述し、結果をこちらで確認します。エディターは補完機能が付いているので非常に書きやすい形になっています。

また、右側は変数やオブジェクトの確認やプロジェクトと呼ばれるソースコードやファイルの管理機能、グラフの確認等も合わせて実行することができます。

 

R言語のパッケージ

世界中で様々なパッケージが近年はtidyverseと呼ばれるパッケージ群が主流で開発も盛んです。

 

tideverseはR界で神のように崇められているhadley wickhamが中心に開発していて、データ分析やそのデータの扱いをもっと「tidy」にしていこうというコンセプトで作られています。

 

www.tidyverse.org

 

「tidy」なデータや分析ってなんやねん、ってなるところですが

ざっくりいうと、ある一定のルールに従って、データを読み込み、統計処理や加工処理をしてもinput, outputも同じ一定の形式になるような処理をしながら分析をする

というプロセスになります。

 

細かいところはこちらのスライドが大変わかりやすいので貼っておきます。

speakerdeck.com

 

tidyverseに含まれるライブラリの中でも有名どころをかいつまんで説明します。

tidyr

f:id:go-mount:20180914150142p:plain

 さまざまなtidy型でないデータを、tidy型に変換してくれる関数が使えるライブラリです。

dplyr

f:id:go-mount:20180914150440p:plain

 

tidy型のデータを絞り込んだり、集計を簡単にできる関数が使えるライブラリです。pythonでいうpandasに近いですね。

ggplot2

f:id:go-mount:20180914150841p:plain

データの可視化を簡単に行うためのライブラリです。

Rの標準のライブラリもありますが、さらに複雑なグラフ描画が可能です。

 

そのほかtidyverseから少し離れますが、便利なパッケージ群

R markdown

f:id:go-mount:20180914151152p:plain

Rとmarkdownを組み合わせてjupyter notebookのような形を作ることができます。

分析結果の取りまとめたレポート作成に便利です。

Shiny

f:id:go-mount:20180914151324p:plain

 ただのレポートじゃ満足できない!という方向けに、webアプリケーションを作れるパッケージもあります。ユーザにwebページとして提供して、パラメータをwebUIで操作してもらいながら分析する。。。といった形を実現できます。shinydashboardと呼ばれる拡張機能も出ているそうです。

 

まとめ

さて、ここまでデータ分析で使われるR言語について書いてきました。

今回書いた内容について、下記の本で詳しく書かれているので参考にさせていただきました。

 

RユーザのためのRStudio[実践]入門−tidyverseによるモダンな分析フローの世界−

RユーザのためのRStudio[実践]入門−tidyverseによるモダンな分析フローの世界−

 

 

最近はpythonの勢いがすさまじくRの勢いが飲まれている感じですが、それでもまだまだデータ分析コンペティションのkaggleでもR言語は使われており、開発も進んでいます。

 

このあたりの開発は非常に盛んなので今後も情報を追っていきたいですね。

 

ではでは