黄昏より暗きもの、血の流れより赤きもの

読者です 読者をやめる 読者になる 読者になる

黄昏より暗きもの、血の流れより赤きもの

自分の好きな事を好きなように書いて行きます。

【R+MySQL】RとMySQLを使いカラムの平均、分散、標準偏差を求める 〜RMySQLのインストールから実践まで〜

序章

MySQLのデータを統計的に調査したり、Excelで加工して伝票や書類を作ると言ったとき、MySQLのデータを外に持ち出す必要がある。一番考えられる方法はcsv出力だが、これが又一手間である。こんな時こそR、Excel(VBA)、C#<->Oracle,Microsoft SQL Server,MySQL間を行き来するようなプログラムの出番だ。

余談だが求人に「VBAC#の出来る人を募集」と書いてあるような、Microsoft製品を愛用する企業の場合、今回Rでやる事をVBAC#でやる事が予想される。iPhone/Android全盛と言っても、日本国内でMicrosoft製品を愛用している人は多い事も見逃せない。

ここで各言語とも MySQLのドライバー(ODBC等)をインストールして、各種ツールの必要な関数を実行する流れは変わらないので是非見て欲しい。

第一章:さくらVPSのCentOS6.4にRMySQLをインストールした手順

第一章は、自分がRMySQLのインストールした手順を簡単に紹介する。RMySQLをCentOS6にインストールする:ドロップシッピング道場【無料ブログで成功するコツを紹介】を参考にセットアップを行なったら上手くいった。具体的には以下の3段階でインストールできた。

  • MySQLとRをサーバー上にインストールする。CentOSの場合「yum -y install mysql」と打ち込めばインストールできる。
  • さらにmysql-devel,mysql-libs,mysql-serverなどをインストール
  • コマンドラインからRと打ち込み、Rを起動しDBIとRMySQLをインストール。この際にinstall.packages("DBI")と入力するとインストールできる。

特に苦戦が予想されるのが、RMySQLをインストールする際に、必要なライブラリがインストールできない事だ。ブログを読んでいるとこのような報告が多数上がっている。ここでLinuxのデイストリビューションに依ってパッケージ管理ツールが違って来るため、それに伴いインストールするMySQLのドライバーの種類も違うようだ。

さらにRMySQLの他、RODBCというドライバーをインストールする方法もあるようだ。詳しくは「RODBCによるRとMySQLの連携:しぶしぶ働くデータアナリストの技術ブログ」を見て欲しい。

第二章:R上でMySQLを呼び出し、色々やってみる

第二章でR上でMySQLを呼び出し、色々やってみようと思う。そこで今回は「R言語上からMySQLを呼び出し、カラムの数値の平均、分散、標準偏差を出力しなさい」という命題に挑戦しようと思う。この命題を以下の2段階の手順を経て解決していく。

手順

  • (1):RMySQLと言うライブラリを使い、MySQLSQLクエリを実行し、カラムの数値を配列に格納。
  • (2):(1)の配列をRのmean()関数、var()関数、sd()関数を用い、カラムの数値の平均、分散、標準偏差を求める。

基本:RMySQLでMySQLに接続するまで

まずは(1)を片付ける。(1)ではRMySQLでMySQLに接続するまでをやれば良い。具体的な方法は他のサーバー言語と同じだ。まずライブラリを読み込む。次にIDやパスワードを入力して接続。最後にSQLクエリを実行し、その結果を配列に格納すれば良い。

応用:RMySQLを使い、MySQLのカラムの数値の平均、分散、標準偏差を出力する

次に(2)を片付ける。(1)よりfetch関数で既にクエリの結果は配列に格納されているので、必要なカラムを番号指定すれば良い。今回は4番目のカラムに数値が格納されていたので、x[4]と言うような指定をしている。

上のようなソースコードを実行すると、以下のように平均、分散、標準偏差が計測できた。今回変数dに格納されている数値は以下の通りで、Excelで検算したら正しく出力されている事が分かった。

元データ(dの形で)

d<-(604,604,724,499,564,499,778,1634)

実行結果

コマンドライン上でRの結果を表示する方法については、「Rをコマンドラインで実行する:Biomet」さんを参考にした。

[xxxx]# R --vanilla --slave < test.R
[1] 738.25
[1] 140720.2
[1] 375.1269