とします 後者は Excel 上の指定したセル範囲を R 上にデータフレームとして保存します たとえば セル A1 から B10 の範囲の値 ( 1 行目は変数名 それ以外はデータとする ) を R 上にデータフレーム mydf として保存するには Rinterface.PutDataframe m

Similar documents
図 1 プロファイル作成プログラム ⑴ では各種情報を入力するためのダイアログボックスの表示 中盤では R 関数を利用した直交配列表の探索 後半ではプロファイルの作成をそれぞれ行います ⑴ 各種情報の入力プログラムの前半 ( 図 1) では プロファイルを設計するために必要な各種情報を入力する機能を

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

ダーを利用した Excel のデータの解析手順等について紹介し 後半では簡単なアプリケーションの作成に挑戦してみたいと考えています なお RExcel のインストールや使用にあたっては Windows の管理者権限での起動や Excel のマクロのセキュリティレベルの変更等が必要になります ご使用の

PowerPoint プレゼンテーション

Microsoft Word - VBA基礎(1).docx

Microsoft Word _VBAProg1.docx

初めてのプログラミング

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

図 2 Excel スプレッドシートの世界 のウィンドウ 図 3 Visual Basic の世界 のウィンドウ 図 3 の VBA ウィンドウは 図 2 の Excel ウィンドウのメニューの ツール をクリックし 開か れるプルダウンメニューで マクロ /Visual Basic Editor

プレポスト【問題】

ExcelVBA

Excel2013 シート・ブック間の編集と集計


-2 -


各種パスワードについて マイナンバー管理票では 3 種のパスワードを使用します (1) 読み取りパスワード Excel 機能の読み取りパスワードです 任意に設定可能です (2) 管理者パスワード マイナンバー管理表 の管理者のパスワードです 管理者パスワード はパスワードの流出を防ぐ目的で この操作

Excel2013 マクロ

第 1 章 VBA について 1 イントロダクション 校務で生徒や先生方のデータの集計など,Excel を使用することが多くなっています 日常,Excel で作業をしていると 同じ操作 を繰り返し行わなければいけないことが多くありませんか? この 同じ操作 を VBA を利用し, より業務を効率化さ

PowerPoint プレゼンテーション

Microsoft Word - VB.doc

OTRS10 他社システムOTRS呼出利用手順書

Microsoft Word - 操作マニュアル-Excel-2.doc


⑴ ⑵ ⑶

⑴ ⑵ ⑶

⑴ ⑵ ⑶

⑴ ⑵ ⑶

⑴ ⑵ ⑶

エクセルによる数値計算と化学への応用


⑴ ⑵ ⑶ ⑷ 1

スライド 1

上の図がプロジェクトエクスプローラです 通常 VisualBasicEditor 画面の左上に配置されています Microsoft Excel Objects( ワークシート ) フォーム 標準モジュール クラスモジュールなどに分かれていて それらの集まりをプロジェクトといいます Excel のワー



Microsoft Word -

Microsoft Word - pasikon_7.doc

PowerPoint プレゼンテーション

0.0 Excelファイルの読み取り専用での立ち上げ手順 1) 開示 Excelファイルの知的所有権について開示する数値解析の説明用の Excel ファイルには 改変ができないようにパスワードが設定してあります しかし 読者の方には読み取り用のパスワードを開示しますので Excel ファイルを読み取

PowerPoint プレゼンテーション

Section1_入力用テンプレートの作成

⑵ ⑶ ⑷ ⑸ ⑴ ⑵

(7) 表示されている [ オートフィルオプション ] をクリックして [ 書式なしコピ ー ] をクリックします (8)[ 評価 1] の結果が表示されます [ 評価 2] の列には [ 売上数量 ] が 1500 以上であれば 1000 以上であれば そ うでなければ と表示されるようにしてくだ

Microsoft PowerPoint - kakeibo-shiryo1.pptx

情報処理実習(工基3)


Microsoft PowerPoint - VBA解説1.ppt [互換モード]

メッシュ農業気象データ利用マニュアル

プログラミング演習

クイックスタートガイドデスクトップバージョン GeoGebra とは? ひとつの使いやすいパッケージになった, 動的数学ソフトウェアです すべての教育段階における学習や指導に使用できます 二次元および三次元の幾何 (geometry), 代数 (algebra), 表計算, グラフ, 解析, そして


図 1 アドインに登録する メニューバーに [BAYONET] が追加されます 登録 : Excel 2007, 2010, 2013 の場合 1 Excel ブックを開きます Excel2007 の場合 左上の Office マークをクリックします 図 2 Office マーク (Excel 20

2 / 14 第 7 講データ処理 ブック ( ファイル ) を開く第 6 講で保存したブック internet.xlsx を開きましょう 1. [Office ボタン ] から [ 開く ] をクリックします 2. [ ファイルの場所 ] がデータを保存している場所になっていることを確

スライド 1

パソコンで楽チン、電力管理3169編

MoreStudy 第 6 章 MoreStudy 第 6 章 第 1 節 貼り付け 3 [ 形式を選択して貼り付け ] ダイアログから [Microsoft Excel ワークシート ] を選択し [OK] ボタンを 押します 1 Excel ワークシートで貼り付け [Pastespec] リボン


年齢別人数計算ツールマニュアル

エクセルの基礎を学びながら、金額を入力すると自動的に計算され、1年分の集計も表示される「おこづかい帳」を作りしょう

プログラミング演習

簡易版メタデータ

PowerPoint プレゼンテーション

[Excelが自動化するVBAの魔法2]購入者限定テキスト

ワープロソフトウェア

2 ( 178 9)

281


問題 1 次の文章は 作業環境について述べたものである を解答群 { } より選び その記号で答えよ にあてはまる適切なもの 設問 1. < 図 1>はルーラーの一部である 1に示されるインデントマーカーを移動することにより を設定することができる < 図 1> { ア. 1 行目のインデントイ.

Microsoft Word - マニュアル-ExcelMcro-2.doc

(5) 作業グループの設定 < 解答 > ( ア )=2 作業グループは 複数のシートにカーボン紙のように 同じ編集ができる機能です 先頭 Sheet1 をクリックしてから Shift キーを押しながら 末尾 ( まつび ) の Sheet3 をクリックすると Sheet1 ~ Sheet3 がグル

Excelで血圧記録表を作成しょう!

条件付き書式 の ルールの管理 をクリック 2 新規ルール をクリック 1 ルール の管理をクリック 3 指定の値を含むセルだけ書式設定 を クリック 7 グレーを選び OK をクリック 4 次の値に等しい を選ぶ 5 2 と入力 6 書式をクリック 8OK をクリック 以下同様に 新規ルール をク

Microsoft Word - appendix_b

PowerPoint プレゼンテーション

やってみようINFINITY-製品仕様書 品質評価表 メタデータ 編-

Microsoft Word - MP2006簡単操作ガイド_修正後.doc

1セル範囲 A13:E196 を選択し メニューの データ - 並べ替え をクリック 並べ替え ダイアログボックスで 最優先されるキー から 年代 を選択し OK をクリック ( セル範囲 A13:E196 のデータが 年代 で並び替えられたことを確認する ) 2セル範囲 A13:E196 を選択し

スライド 1

(Microsoft Word - 01PowerPoint\217\343\213\211C\203p\203^\201[\203\223\222m\216\257\225\\\216\206.doc)

スクールCOBOL2002

win版8日目

saihata.doc

第 1 節 スクリーンショット スクリーンショットとは コンピューターで開いているウィンドウの全体や その一部を 画像として取り込むことができる機能です ここでは 地図の挿入を行います 232

数量的アプローチ 年 6 月 11 日 イントロダクション データ分析をマスターする 12 のレッスン ウェブサポートページ ( 有斐閣 ) 水落研究室 R http:

参考資料 分析ツールからダウンロードするデータについて < 行為明細 > 行為明細データを使いましょう (EVE をお使いの場合は ヘルプの行為明細ダウンロードを参照 ) 各分析ツールのマニュアルを参考にしてください

2

data_appendix.indd


分析のステップ Step 1: Y( 目的変数 ) に対する値の順序を確認 Step 2: モデルのあてはめ を実行 適切なモデルの指定 Step 3: オプションを指定し オッズ比とその信頼区間を表示 以下 このステップに沿って JMP の操作をご説明します Step 1: Y( 目的変数 ) の

⑴ ⑵ ⑶

暮らしのパソコンいろは早稲田公民館 ICT サポートボランティア

SideAceユーザーズガイド

第4回

関数とは 関数とは 結果を得るために 処理を行う仕組み です Excel2010 には あらかじめ関数が数式として組み込まれています たとえば SUM 関数 は 指定した値をすべて合計する 仕組みです 長い計算式や複雑な計算式を作成せずに 簡単に結果を求めることができます 例合計 =A1+A2+A3

Excel2013 ピボットテーブル基礎

セル G5 に 大手町店 の合計を求めましょう 暮らしのパソコンいろは 1 セル G5 をクリックします 2 ホーム タブをクリックします 3 編集 グループの ( 合計 ) をクリックします セル G5 と数式バーに =SUM(D5:F5) と表示され セル範囲 D5:F5 が点滅する線で囲まれま

経済データ分析A

LOG分析シート(1000)_DOC_ xls

PowerPoint プレゼンテーション

2.2 文がセルの行の高さの限界値を超えた場合の処理本アドインは 文がセルの行の高さの限界値 (409.5 ポイント ) を超えている場合に 行を追加し自動調整する機能を備えています 文がセルの行の高さの限界値 (409.5 ポイント ) を超えている場合 メッセージボックスを表示し 行挿入処理が

Transcription:

( 独 ) 農業 食品産業技術総合研究機構農村工学研究所農村計画部主任研究員 合崎英男 2000 年 3 月北海道大学大学院農学研究科博士後期課程修了 博士 ( 農学 ) 農林水産省農業研究センター研究員 農業工学研究所研究員 同主任研究官を経て 06 年 4 月より現職 専門分野は農業経済学 ( 主に環境配慮や食品安全性に関する意思決定分析 ) 1. はじめに RExcel シリーズ第 4 回では Excel VBA で R の関数 ( 以下 R 関数 ) を利用する方法について紹介します Excel では 利用者がさまざまな機能を独自のプログラムとして作成 活用できるように Excel VBA( 以下 VBA) というマクロ言語を実装しています RExcel の導入によって VBA に新たなプロシージャ等が加わり VBA 上で R 関数が利用可能となります 今号では いくつかの計算例を紹介しますが VBA 自体の説明は最小限となっています VBA の利用経験によっては 若干わかりにくい部分があるかもしれません VBA を解説した書籍等は多数刊行されていますので 必要に応じて参照してください 2. プロシージャ RExcel を導入することで VBA に新たなプロシージャが加わりますが それらの先頭部分には Rinterface. が付いています ここ では 今号で使用する 10 のプロシージャを簡単に紹介します Rinterface.StartRServer と Rinterface.StopRServer は それぞれ R サーバーを開始 / 終了させるために使用します Rinterface.RRun は R 関数で記述した命令文を実行します たとえば 一様乱数を 1 つ生成して変数 a に保存する 命令文を R 上で実行するには Rinterface.RRun a<-runif(1) と記述します Excel から R に数値 行列 / データフレームを渡すためには Rinterface.PutArray と Rinterface.PutDataframe を利用します 前者は Excel 上の指定したセル ( 範囲 ) の値を R 上に変数として保存します たとえば セル A1 に入力されている数値を R 上に変数 var1 として保存するには Rinterface.PutArray var1, Range( A1 ) 48 ESTRELA 2010 年 11 月 (No.200)

とします 後者は Excel 上の指定したセル範囲を R 上にデータフレームとして保存します たとえば セル A1 から B10 の範囲の値 ( 1 行目は変数名 それ以外はデータとする ) を R 上にデータフレーム mydf として保存するには Rinterface.PutDataframe mydf, Range( A1:B10 ) とします 一方 Rから Excelに数値 行列 / データフレームを渡すためには Rinterface.GetArray と Rinterface.GetDataframe を利用します 前者は R 上の変数に保存されたデータを Excel 上のセル ( 範囲 ) に返します たとえば R 上の変数 var1 に保存されている値をセル A2 に返すには Rinterface.GetArray var1, Range( A2 ) とします 後者は R 上のデータフレームを Excel 上のセル範囲に返します たとえば R 上のデータフレーム mydf をセル A1 を左上端とするセル範囲に返すときには Rinterface.GetDataframe mydf, Range( A1 ) 紹介したワークシート関数 RApply と RCall に対 応します ) たとえば 前者を使ってセル A1 に 入力された数値の 2 乗を計算し その結果をセ ル A2 に返すときには Rinterface.GetRApply function(x)x*x, Range( A2 ), Range( A1 ) とします Rinterface.InsertCurrentRPlot は R 関数で作成した図のコピーを 幅 / 高さ等を指定して Excel 上の任意のセルを左上端とした領域に貼り付けます これらのプロシージャの詳細な書式や そのほかのプロシージャ等については RExcel のヘルプ ( RExcel RExcel Help ) をご覧ください 3. 準備 Excel の起動後 ツールバーの RExcel Start R を選択して R を立ち上げます 次に VBA のプログラムを作成するため Visual Basic Editor( 以下 VBE) を立ち上げます Excel のツールバーから ツール マクロ Visual Basic Editor を選択します VBE( 図 1) が立ち上がりましたら RExcel 図 1 Visual Basic Editor(VBE) とします R 関数を使った命令文を R 上で実行し その結果を得るためのプロシージャとして Rinterface.GetRApply と Rinterface. RunRCall があります 前者は実行結果を Excel に返しますが 後者は返さないという違いがあります ( それぞれ前回の 2010 年 10 月号で 2010 年 11 月 (No.200) ESTRELA 49

の機能を VBA で実行できるように設定します VBE のツールバーの ツール 参照設定 を選択すると 参照可能なライブラリーの一覧が表示されます その中から RExcelVBAlib を探して 選択されているか確認します ライブラリー名の前のボックス ( ) にチェックマーク ( ) が入っていれば 選択済みです 選択されていない場合は 同ボックスをクリックしてチェックマークを入れ [OK] ボタンを押します 最後に VBE のツールバーから 挿入 標準モジュール を選択し プログラムを入力するコードウィンドウを開きます 4. プログラム例 今回は 簡単なプログラム例を 5 つ紹介します 前回 (2010 年 10 月号 ) のワークシート関数を利用した例とほぼ同様な内容を VBA で行うこととします 数 var2 に保存するよう指示しています 5 行は変数 var2 に保存されている値をセル A2 に転送するよう指示しています 以上で R 関連のコード部分が終わりであることから 6 行で RServer を停止させています 上記のプログラムを VBE に入力した上で Excel のシートに戻り セル A1 に 3 を入力して ( 図 3) このマクロを実行します マクロの実行は Excel のツールバーの ツール マクロ マクロ から現れるウィンドウで 実行したい マクロ名 を選択して [ 実行 ] をクリックします マクロ名 は プログラムの 1 行の Sub の後に設定した Example1 が該当します 実行した結果 3 2 の値である 9 がセル A2 に出力されます なお 図 2の3 行から5 行を 2 節で Rinterface.GetRApply の例として示した命令文で 置き換えることもできます ⑴ 数値の計算例 1 は セル A1 に入力された数値の 2 乗した値を セル A2 に出力するプログラムです 図 2 にプログラムを示します 1 行の Sub と7 行の End Sub は VBAの命令文です この 2 つの間に記述されたコードが 1 行の Sub の後に記述されている Example1 という名称のマクロとして処理されます ( Example1 の後の半角両括弧は どのような名称のときでも付けます ) 2 行から 6 行が RExcel によって新たに導入されたプロシージャを使ったコード部分です 2 行で RServer を開始させています 3 行はセル A1 に入力されている数値を変数 var1 として R に保存するよう指示し 4 行は R で変数 var1 の 2 乗を計算し その計算結果を変 ⑵ 複数の変数を使った計算例 2 では 2 つの変数の相関係数を求めます 使用するデータは セル A4 から B10 の範囲に入力されている変数 x と y とします ( 図 3) 図 2 の 9 行から 14 行が 本例のプログラムです 9 行 10 行 13 行 14 行は例 1 と同じですので 説明は省略します 11 行から 12 行で セル A4 から B10 の範囲を変数名も含めてデータフレームとして扱い (AsSimpleDF(Range( A4:B10 ))) R 上で変数 xとyの相関係数を求めて ( function(mydf)with(mydf, cor(x,y)) ) その結果をセル A12 に返す (Range( A12 )) よう指示しています 上記のプログラムを Example2 として 先ほどの Example1 のプログラムの後に入 50 ESTRELA 2010 年 11 月 (No.200)

フリーソフトによるデータ解析 マイニング 図 2 Example1 5 のプログラム 1 行 Sub Example1() 2 行 Rinterface.StartRServer 3 行 Rinterface.PutArray "var1", Range("A1") 4 行 Rinterface.RRun "var2<-var1*var1" 5 行 Rinterface.GetArray "var2", Range("A2") 6 行 Rinterface.StopRServer 7 行 End Sub 8 行 9 行 Sub Example2() 10 行 Rinterface.StartRServer 11 行 Rinterface.GetRApply "function(mydf)with(mydf, cor(x,y))", _ 12 行 Range("A12"), AsSimpleDF(Range("A4:B10")) 13 行 Rinterface.StopRServer 14 行 End Sub 15 行 16 行 Sub Example3() 17 行 Rinterface.StartRServer 18 行 Rinterface.PutArray "mat1", Range("A5:B10") 19 行 Rinterface.RRun "mat2<-t(mat1)" 20 行 Rinterface.GetArray "mat2", Range("A14") 21 行 Rinterface.StopRServer 22 行 End Sub 23 行 24 行 Sub Example4() 25 行 Rinterface.StartRServer 26 行 Rinterface.RunRCall "function(mydf)with(mydf, plot(x,y))", _ 27 行 AsSimpleDF(Range("A4:B10")) 28 行 Rinterface.InsertCurrentRPlot Range("C17"), _ 29 行 widthrescale:=0.3, heightrescale:=0.3, closergraph:=true 30 行 Rinterface.StopRServer 31 行 End Sub 32 行 33 行 Sub Example5() 34 行 Rinterface.StartRServer 35 行 Rinterface.PutDataframe "mydf", Range("A4:B10") 36 行 Rinterface.RRun "out<-summary(lm(y~x, data=mydf))" 37 行 Rinterface.GetArray "out$coef", Range("B30") 38 行 Rinterface.GetArray "t(colnames(out$coef))", Range("B29") 39 行 Rinterface.GetArray "rownames(out$coef)", Range("A30") 40 行 Rinterface.StopRServer 41 行 End Sub 力します セル A4 から B10 のデータを変数名も含めて入力した上で 例 1 と同様な手順で Example2 マクロを実行すると 図 3 の 12 行に示す結果が得られます なお 図 2 の 11 行の末尾にある _ は VBA で定義されている記号で その行に書かれている命令文は 次の行にも続いていることを表します 11 行と 12 行を 1 つの行で記述するときは この _ を削除した上で 12 行の内容を 11 行の末尾から続けて記述します 2010 年 11 月 (No.200) ESTRELA 51

⑶ 行列の計算例 3 では 行列の計算を行います 図 3 の変数 x と y の数値部分のみに注目して 6 行 2 列の行列とみなし それを R に転送して転置し 転置行列を Excel に戻します 図 2 の 16 行から 22 行が 本例のプログラムです 18 行はセル A5 から B10 の範囲のデータ (Range( A5:B10 )) を R 上に行列 mat1 として保存し 19 行は行列 mat1 の転置行列 (t(mat1)) を行列 mat2 に保存し 20 行は行列 mat2 をセル A14 を左上端とする範囲 (Range( A14 )) に戻すよう指示しています このプログラムを Example3 として 例 2 のプログラムの後に入力 実行すると 図 3 の 14 行から 15 行に示す結果が得られます 図 3 各 Example の実行結果 52 ESTRELA 2010 年 11 月 (No.200)

フリーソフトによるデータ解析 マイニング ⑷ 作図例 4 では 変数 x と y の散布図を描きます 図 2の24 行から31 行が 本例のプログラムです 26 行から27 行は セル A4 から B10 の範囲にあるデータをデータフレームとしてRに取り込み (AsSimpleDF(Range( A4:B10 ))) 関数 plot を使って作図 ( function(mydf) with(mydf, plot(x,y)) ) するよう指示しています この命令によって 新たなウィンドウに変数 x と y の散布図が描かれます 28 行から 29 行は その散布図のコピーを Excel 上のセル C17 を左上端とした範囲に 指定した幅と高さ ( ともに 0.3) で貼り付け もとの散布図は削除 (closergraph:=true) するよう指示しています このプログラムを Example4 として入力 実行した結果が 図 3 の 17 行から 27 行の範囲にある図です ⑸ 統計モデル分析最後の例は 変数 x と y を利用した回帰分析です 図 2の33 行から41 行が 本例のプログラムです 35 行は セル A4 から B10 の範囲にある変数 xとyのデータセット (Range( A4:B10 )) を変数名も含めて R 上 にデータフレーム ( mydf ) として転送するよう指示しています 36 行は R 上で関数 lm を利用して回帰分析を実行し (lm(y~x, data=mydf)) その結果の要約( 関数 summary) を out に保存するよう指示しています そして out に保存されている情報のうち 37 行では得られた推定値等 ( out$coef ) をセル B30(Range( B30 )) を左上端とする範囲に 38 行では Estimate などの項目名 ( t(colnames(out$coef ) をセル B29 (Range( B29 )) から右側のセル範囲に 39 行では変数名 ( rownames(out$coef) ) をセル A30(Range( A30 )) から下の範囲に それぞれ返すよう指示しています 上記のプログラムを Example5 として入力 実行した結果が 図 3 の 29 行から 31 行の部分になります 5. おわりに Excel のツールバーの RExcel Demo Worksheets Writing macros にはマクロを使った例が示されています 今号の例と同じ R 関数を使った作業を 異なるコードで実行しているケースもあります また 今回は紹介できなかったプロシージャも利用されています 関心のある方は 必要に応じて参照してください 2010 年 11 月 (No.200) ESTRELA 53