R言語とExcel : RでExcelと同等の作業をするには?

R

僕はこれまで入社以来約25年機械製品の設計・開発試験等の仕事を続けてきました。その間、一番使い続けてきたソフトはExcelです。Excelでできることって、実はRでもすべできるなぁ、いや、Rの機能を使えばもっと多くのことができるなぁと感じています。

仕事の中で使ってきたExcelの機能を整理すると以下のようになります。

  1. 関数計算
    • 統計関数
    • VLOOKUP
    • DLL関数の呼び出し
  2. データの整理
    1. データのソート
    2. データのフィルタリング・抽出
  3. グラフの作成
  4. 回帰分析
  5. ソルバー
  6. モンテカルロ・シミュレーション
  7. マクロ

この機能とRの関係について整理しています。

RでExcelと同等の作業をするために

RでExcelと同等の作業をするためには、まずデータExcelからRに移植。Excelファイルの読み込み方法はこちら。

RによるExcelファイル(csv, xlsx)の読み込み方法
せっかくRを使えるようになっても、解析したいデータがExcelファイル…。データを解析するには、まず、解析データをExcelファイルからRに読み込む必要があります。ここでは、大きく3つの方法を紹介します。

Rはいろいろなパッケージをインストールすることで機能を拡張することができます。もともとExcelで行っていた機能をRで行えるようにするために理解する必要のあることやパッケージをまとめてみました。

項目 Rで同等のことをするには 関連するリンク
関数計算    
・統計計算 基本文法(mean関数, sd関数, 等)  
・VLOOKUP 基本文法([]や[[]]と論理ベクトルなど) RでExcelのVLOOKUP関数と同じことを実行する
・DLL関数の呼び出し .C関数  
データの整理    
・データのソート dplyrパッケージ(arrange関数)  
・データのフィルタリング・抽出 []や[[]]と論理ベクトルによる抽出
dplyrパッケージ(filter関数)
 
グラフの作成 ggplot2パッケージ Excelのように左右に軸があるグラフをRで作る
回帰分析 lm関数  
ソルバー ・nleqslvパッケージ (非線形連立方程式を解くパッケージ)
・Rsolnpパケージ (非線形関数の最適化、等式制約、不等式制約あり)
 
モンテカルロ・シミュレーション 基本文法(runif関数、rnorm関数、sample関数、等)  
マクロ 基本文法  

Excelの一番のメリット、デメリット

Excelの一番のメリットであり、デメリットであることは、「簡単に計算できること」だと思います。特に多くの人が使えるようなツールを作るとそれを強く感じます。

仕事の中でなるべく多くの人が色々な目的で使えるようなExcelツールを作ることがよくあります。Excelツールを作る際、なるべくわかりやすいように、計算の流れは左から右、上から下に流れていくように作るようにしています。

ツールを使う人は作業効率改善のために少しづつツールを改修していったりします。自分が作業しやすくて空いているセルなどを使ってちょこっとした修正を行なっていきます。また、必要な数字がシートの別の場所や別シートにあればそれを参照した修正なども行なっていきます。こういうことが、積もり積もった後、ある日、最新化されたExcelツールをみると、あちこちのセルにリンクが取られ、はてはMACTH関数などが導入されていたりして、もともと作っていた左から右、上から下といった計算の流れが無視され、どういう順番で何が計算が計算されているのかを追うのがとても難しいExcelファイルになっていたりします。

簡単な計算ファイルなら頑張って追っかけます。でも、複雑な計算をできるように一生懸命作ったファイルなんかだと...何のための作業効率化?ガックリきます。

わかるんですけどね。Excelでちょこちょこっとした修正は簡単なので。自分でもやりますし。

こういう状況をできるだけ打破したい、複雑な解析内容を見通しよく整理したいと思い、Rを導入し始めましたが、Excelの手軽さも捨て難い魅力です。両者をバランスよく使っていくのが理想ですね。

Rでできること

ここで整理したように、Rを使えば、Excelと同等のことはできます。が、Excel以上にもっと多くのことができます。Rでできることの一部をこちらで整理しています。

R言語とは?Rでできること。現役Rユーザーが語る。
R言語は、データ分析、統計解析に特化した言語であるとよく言われます。しかし「データ分析」「統計解析」しかできないと考えてしまっては損をしています。C/C++のような汎用のプログラミング言語同様の制御構造を備えていますし、CRANで公開されているパッケージを利用すれば、はるかに簡単に望みの機能を実装することができる言語です。

まとめ

上の表「Rで同等のことをするには」の内容は多分、Rをバリバリにつかっている人からみたら基本中の基本みたいなところなんだと思います。逆に言えば、これらを理解すれば、その先には今までできなかったことができる世界が待っているということ。

Excelを離れてRの世界を探検します。