• 検索結果がありません。

図 2 ショートカットメニューによる R 関 数 の 利 用 ⑵ R のコードの 実 行 2 の 値 を R で 計 算 させ( 関 数 sqrt が 該 当 ) その 結 果 を R から Excel に 転 送 させてみましょ う( 図 2) R での 計 算 結 果 を 変 数 v1 に 保

N/A
N/A
Protected

Academic year: 2021

シェア "図 2 ショートカットメニューによる R 関 数 の 利 用 ⑵ R のコードの 実 行 2 の 値 を R で 計 算 させ( 関 数 sqrt が 該 当 ) その 結 果 を R から Excel に 転 送 させてみましょ う( 図 2) R での 計 算 結 果 を 変 数 v1 に 保"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

1. はじめに

 RExcel シリーズ第 3 回では、Excel のシート 上で R の関数(以下、R 関数)を利用する方法 について紹介します。  RExcel を導入することで、Excel に標準で設 定されているワークシート関数(以下、Excel 関数)と同様に、R 関数を Excel で利用する ことが可能となります。第 1 の方法は、Excel のセルに R 関数を記述し、ショートカットメ ニューを使って R に転送・実行させたり、計 算結果をセルに転送させたりするというもの です。第 2 の方法は、関数 RApply 等を使って Excel 関数のように R 関数を利用するというも のです。  今回は R コマンダーを立ち上げない状態で Excel を利用しています。R コマンダーを起動 している場合、後述のショートカットメニュー に現れる機能が少し多くなります。

2. ショートカットメニューによるR

関数の利用

⑴ 基本操作  ショートカットメニューに現れる RExcel の 機能を使うことで、Excel のセルに入力した R 関数やデータを R に転送し、計算結果を R から Excel のセルに転送させることができま す。ショートカットメニューは、任意のセルを 選択して右クリックすることで現れます(図 1)。R のコードを実行するには「Run code」、 数値や行列など(データフレーム)を Excel か ら R へ 転 送 す る に は「Put R Var」(「Put R DataFrame」)、 逆 に そ れ ら を R か ら Excel へ 転 送 す る に は「Get R Value」(「Get R DataFrame」)を 利用します。

(独)農業・食品産業技術総合研究機構

農村工学研究所農村計画部主任研究員

合崎 英男

(Aizaki Hideo) ■2000 年 3 月北海道大学大学院農学研究科博士後期課程修了。博 士(農学)。農林水産省農業研究センター研究員、農業工学研究所 研究員、同主任研究官を経て、06 年 4 月より現職。専門分野は農 業経済学(主に環境配慮や食品安全性に関する意思決定分析)。

[連載]フリーソフトによるデータ解析・マイニング

 第87回

図 1 RExcel のショート カットメニュー

(2)

⑵ R のコードの実行  √2 の値を R で計算させ(関数 sqrt が該当)、 その結果を R から Excel に転送させてみましょ う(図 2)。R での計算結果を変数 v1 に保存す るとして、セル A1 に「v1<-sqrt(2)」と入 力して[Enter]キーを押します(以下、「[Enter] キーを押す」は省略)。次に、そのセルを選択 して右クリックし、表示されたメニューから 「Run code」を選択します。これで指定した コードが R で実行されます。そして、別のセ ル A2 を選択して右クリックし、「Get R Value」 を実行します。別画面が開くので(図 3)、計 算結果を保存している変数 v1 の値をコピーす るように指示すると(R expression のボックス に「v1」を入力し、[OK]ボタンを押します)、 セル A2 に計算結果が返されます(セルの幅等 によって、表示される桁数は異なります)。  上記の例では、実行した R のコードは 1 セ ル(1 行)分でしたが、複数のセルに入力した コードを一度に実行することも可能です(図 2)。たとえば、乱数の種を「123」に設定し (関数 set.seed が該当)、一様乱数を 1 つ生成 させてみましょう(関数 runif が該当)。セル A4 に「set.seed(123)」、セル A5 に「v2<-runif(1)」とそれぞれ入力します。次に、セ ル A4 から A5 の範囲を選択して右クリックし、 「Run code」を実行します。そして、セル A6 を選択して右クリックから「Get R Value」を 実行して変数 v2 を指定すると、保存されてい た結果がセル A6 に返されます。 ⑶ R へのデータの転送  R 関数を含んだコードの実行方法と同様な手 図 2 ショートカットメニューによる R 関数の利用 図 3 R から Excel へのデータの転送 (GetRValue)

(3)

順で、Excel のセルに入力したデータを、R に 転送できます。データの種類によって「Put R Var」か「Put R DataFrame」を用います。デー タフレームの転送方法は、RExcel シリーズ第 1 回(2010 年 8 月号)で紹介済みですので、今 回は数値と行列の転送方法を紹介します。  たとえば、セル A8 から C10 の範囲のセルに、 図 2 の通りに数値を入力したとします。ここで、 1 つの数値のみを選択して右クリックし、「Put R Var」を選択すれば、その値を R に転送でき ます。仮に、セル A8 を選択して「Put R Var」 を実行すると、別画面(図 4)が開きますので、 Array name in R のボックスに「v3」と入力し、 [OK]ボタンを押します。これでセル A8 に入 力されていた「2」という数値を R に転送(「v3」 に保存)することができました。データの転送 を確認するため、セル A12 を選択して右クリッ クから「Get R Value」を実行して「v3」を指 定すると、先ほど保存した値がそのセルに返さ れます。  次に、図 2 のセル A8 から C10 の範囲すべて を選択して右クリックから「Put R Var」を実 行し、R に行列として転送します(行列名は 「m1」とします)。転送後、試しにセル A14 に その行列を使った行列積を求めるコード「m2<-m1%*%m1」を入力し、「Run code」を実行して みます。そして、セル A15 を選択して右クリッ クから「Get R Value」を実行し、「m2」を指定 して[OK]ボタンを押せば、そのセルを左上 端とした範囲に計算結果(行列)が転送されま す。

3. 関数RApplyによるR関数の利用

⑴ 基本書式  R 関数を Excel のシート上で利用する 2 つめ の方法は、RExcel をインストールすることで 新たに導入された関数 RApply を利用する方法 です。関数 RApply の書式は、   =RApply(R 関数 , 引数 ) です。Excel 関数と同様に、関数名の前に半角 のイコールを入れ、関数名のあとの半角の両括 弧内に引数を指定します。関数 RApply の引数 は「R 関数」と「引数」の 2 種類です。「R 関 数」部分には、使用したい R 関数を指定します。 「引数」部分には、指定した R 関数で用いる引 数を指定します。  関数 RApply と同じ機能を持ちますが、R か らの計算結果が Excel のシートに返されない点 が異なる関数 RCall もあります。この関数の書 式も関数 RApply と同じです。 ⑵ 数式の計算  R 関数を使って、先ほどと同じ√2 の値を求 めてみます(図 5)。セル A19 に「sqrt」、セ ル A20 に「2」をそれぞれ入力します。そして、 セル A21 に「=RApply(A19, A20)」と入力 して[Enter]キーを押すと、結果が返されます。  「R 関数」と「引数」を関数 RApply の中で直 接指定することもできます。「R 関数」は半角

(4)

のダブルクォーテーションで囲み、「引数」は 数値を直接入力します。たとえば、セル A22 に「=RApply(“sqrt”, 2)」と入力すれば、先 ほどと同じ結果が返されます。  関数 RApply の「R 関数」部分には、利用者 が独自に設定した関数を指定することもできま す。たとえば、「引数」で与えられた値の 2 乗 を求める関数は、    あるいは    と表現できます。前者の 1 行で関数を表現した ものをセル A24 に入力します。後者の 3 行で function(x)x*x function(x){ x*x } 関数を表現したものについては、1 行目部分を セル A25、2 行目部分をセル A26、3 行目部分 をセル A27 にそれぞれ入力します。これらの 関数で 32の値を求めるとします。セル A28 に 「3」を入力します。次に、前者の 1 行表示の 関数を利用するときには、その関数を記述して いるセルを関数 RApply の「R 関数」部分で指 定します。ここではセルA29に「=RApply(A24, A28)」と入力すれば、32の値である「9」が 返されます。他方、後者の複数行表示の関数を 利用するときには、該当するセル範囲を関数 RApply の「R 関数」部分で指定します。セル A30 に「=RApply(A25:A27, A28)」 と 入 力 すれば、同じ計算結果が返されます。

 セル範囲に名前を付けて、その名前を「R 関 数」部分で指定することもできます。たとえば、

フリーソフトによるデータ解析・マイニング

(5)

セル A25 から A27 の範囲を選択して右クリッ クから「Name range」を選びます。別画面(図 6) が開きますので、選択した範囲の名前を「myf1」 と入力して[OK]ボタンを押します。そして、 セル A31 に「=RApply(myf1, A28)」と入力 すれば、計算結果が返されます(「引数」にも 名前の設定を活用できます)。  関数 RApply の「引数」では、関数 AsRExpr と関数 AsSimpleDF が使えます。関数 AsRExpr は、関数 RApply の「引数」に R 表現式を用い るときに使います。たとえば、log2 の値を 10 倍する計算を考えてみます。値を 10 倍するコー ド(function(x)x*10) を 図 5 の セ ル A33 に、log2 を計算するコード(log(2))をセル A34 にそれぞれ入力します。そして、セル A35 に「=RApply(A33, AsRExpr(A34))」と入 力すると、計算結果が返されます。  関数 AsSimpleDF は、指定された範囲をデー タフレームとして、関数 RApply の「引数」に 用いることができます。複数の変数を含んだ データセットを準備し、「R 関数」で変数名を 利用することができます。たとえば、変数 x と y を、変数名を含めてセル A37 から B43 の範 囲に入力します(図 5)。ここで変数 x と y の 相関を R 関数(関数 cor が該当)で求めてみま す。セル A45 に次のように入力すると、    両変数の相関係数が返されます。 ⑶ 行列の計算  R 関数を用いた行列計算の一例として、ある 行列の転置行列を作成してみましょう(関数 t が該当)。転置行列のもととなる行列には、変 数 x と y として入力した各 6 つの数値全体を 6 行 2 列の行列と見なして利用します(変数名 部分は除外)。6 行 2 列の行列の転置行列は 2 行 6 列となりますので、ここではセル A47 か ら F48 の範囲を選択します(図 7)。そして、 「=RApply(“t”, A38:B43)」を入力して[Ctrl] +[Shift]+[Enter]キーを押すと(Excel で いうところの配列数式として入力)、もとの行 列の転置行列が出力されます。 ⑷ 作図  R 関数の作図機能の一例として、変数 x と y の散布図を描いてみましょう(関数 plot が該当)。 RExcel に含まれる関数 RCall を使って、セル A50 に「=RCall(“plot”, AsSimpleDF(A37:B43))」 と入力すると(図 7)、別画面に変数 x と y の散布 図が表示されます(出力は省略)。関数 RCall を利 用していますので、関数を入力したセルには関数 plot を実行したことが表示されます。  ちなみに、出力した図は、Excel の任意のセ ル上で右クリックして「Insert Current R Plot」 (関数 plot を実行したときにメニューに現れま

す)を選択することで、Excel のシート上にコ ピーできます。

=RApply(“function(mydf)with (mydf, cor(x, y))”,

AsSimpleDF(A37:B43))

(6)

⑸ 統計モデル分析  最後の例として、統計モデル分析を取り上げ ます。ここでは、セル A37 から B43 の範囲に 入力した変数 x と y を使って、回帰分析を行う とします(関数 lm が該当)。変数 y を目的変数、 変数 x を説明変数として、切片も含めたモデル を想定します。回帰分析をはじめとした統計モ デル分析の結果にはさまざまな情報が含まれま すが、ここでは変数名、係数推定値(Estimate)、 標準誤差(Std. Error)、t 値(t value)、そして p 値(Pr(>│t│))を R から Excel のシート上に 転送させます(図 7)。  関数 lm の実行結果から係数推定値等の値を Excel に転送させるには、セル B53 から E54 の 範囲を選択した上で、    を入力、[Ctrl]+[Shift]+[Enter]キーを 押します。係数推定値等の項目名を Excel に転 送させるには、セル B52 から E52 の範囲を選 択した上で、 =RApply(“function(mydf) coef(summary(lm(y~x, data=mydf)))”, AsSimpleDF(A37:B43))    を入力、[Ctrl]+[Shift]+[Enter]キーを 押します。切片と説明変数(x)を Excel に転 送させるには、セル A53 から A54 の範囲を選 択した上で、    を入力、[Ctrl]+[Shift]+[Enter]キーを 押します。

4. おわりに

 Excel のツールバーの「RExcel」→「Demo Worksheets」へ進むと、デモ用シートが準備さ れています。今回は紹介できなかった関数や機 能も含まれています。また、開発者ら(statconn) の Web サイト(http://rcom.univie.ac.at/)にも 情報があります。関心のある方は必要に応じて、 これらも参照してください。 =RApply(“function(mydf) t(colnames(coef(summary (lm(y~x, data=mydf)))))”, AsSimpleDF(A37:B43)) =RApply(“function (mydf) rownames(coef(summary (lm(y~x, data=mydf))))”, AsSimpleDF(A37:B43)) フリーソフトによるデータ解析・マイニング 図 7 関数 RApply による R 関数の利用 (2)

図 5 関数 RApply による R 関数の利用 (1)

参照

関連したドキュメント

「系統情報の公開」に関する留意事項

(注)本報告書に掲載している数値は端数を四捨五入しているため、表中の数値の合計が表に示されている合計

(7)

、肩 かた 深 ふかさ を掛け合わせて、ある定数で 割り、積石数を算出する近似計算法が 使われるようになりました。この定数は船

いてもらう権利﹂に関するものである︒また︑多数意見は本件の争点を歪曲した︒というのは︑第一に︑多数意見は

(注)本報告書に掲載している数値は端数を四捨五入しているため、表中の数値の合計が表に示されている合計

この場合,波浪変形計算モデルと流れ場計算モデルの2つを用いて,図 2-38

*2: 一次+二次応力の計算結果が許容応力を上回るが,疲労評価を実施し疲労累積係数が許容値 1