[[計量経済学のためのR環境]] #contents *データはどこに置くか [#yef3035a] Windows版Rの場合、Rのプログラムに出てくるフォルダは、何も指定しなければ「bin」というフォルダのことだとみなされます。 そこで、このbinに新規フォルダを作って、そこにデータやプログラムを入れるようにすると、プログラムを短く書くことができます。このページでは、「d」というフォルダを作ることにします。 &ref(http://hnami.sub.jp/p/up/gamen2.jpg); こうしておくと、dにあるsample.txtはc:\Program Files…と長く書く代わりに、短く「d/sample.txt」と書けば参照できます。\はWindows版Rの場合、問題を起こすようで、代わりに/を使います。 *データはプログラムと同じファイルにするべきか? [#l43bc3a8] [[R動作テストプログラム]]のように、数値データとそれを操作するプログラムをひとつのファイルに書くこともできます。しかしいろいろ試行錯誤するとき、書き変えるのはもっぱらプログラムです。 データは別のファイルにして、プログラムの最初に読み込むようにしておけば、プログラムとデータの対応関係もプログラムを読めばわかりますし、プログラムをいじくり回すときに、データの羅列をいちいち目にしなくて済みます。 *2種類の方法だけ [#rb8a4e47] いろいろ方法はありますが、2種類の方法だけ御紹介します。 **ワープロソフト、エディタなどを使う [#u7efdd86] Wordなどのワープロソフト、Windowsについてくる[[メモ帳:http://d.hatena.ne.jp/keyword/%A5%E1%A5%E2%C4%A2]]、フリーソフトの[[VXEditor:http://homepage3.nifty.com/x-labo/]]のようなエディタを使ってデータファイルを作ることもできます。 ---エディタは狭い意味でのテキストファイル、つまり文字の大きさや太さや字体を指定できない、コンピュータプログラムや修飾のない文章を書くソフトです。余計な機能がなくて操作が速いので、コンピュータに慣れた人やソフト開発者がよく使います。 [[R動作テストプログラム]]の最初に3つの変数に値を代入しています。これと同じ内容のデータをRに読ませるには、まず次のような内容の文書を作ります。 x1 x2 y 1.5 1.0 -3.2 2.3 3.9 2.0 3.8 8.6 2.2 4.2 15.25 6.3 5.6 28.6 5.8 6.3 32.68 12.5 プログラムに直接書く場合と比べて、行と列(縦横)がひっくり返っていることに注意してください。 次いでこれを、「名前をつけて保存」します。Wordの場合「書式なし」を選びます。 &ref(http://hnami.sub.jp/p/up/gamen1.jpg); 「保存」を選ぶと色々オプションを聞いてきますが、いっさい修正しないで「OK」してください。この場合、sample.txtというファイルができます。うっかり名前のところに「sample.txt」と書くと「sample.txt.txt」ができてしまいますから注意。 メモ帳なら「書式なし」ではなく「テキスト文書(*.txt)」という「ファイルの種類」の選択肢があります。 セーブしたファイルをRに読み込むとき、読み込んだデータ全体(データセット)に名前をつけます。例えばdsetという名前をつけるとします。 読み込みは、この一行で済みます。 dset <- read.table("d/sample.txt", header=TRUE) header=TRUEは、1行目が変数名だよ、とRに教える表記です。 **表計算ソフトを使う [#l678eff4] 大きなデータを打ち込んで直すとき、ワープロでは不自由です。インターネットで政府機関などから多くのデータが提供されていますが、それもたいていExcelなどのデータ形式です。初期の練習が終わったら、こちらのやり方に慣れましょう。 Excelが最初からインストールされていないパソコンでは、[[Openoffice:http://ja.openoffice.org/]]の利用をお勧めします。これは無料でダウンロードできる(パソコン雑誌の付録CDにもよく入っています)ソフトで、MS Officeの機能をほとんどカバーします。Wordとの互換性は完全ではなく、罫線が縦横に細かく走った役所の書類をWordファイルで読ませると完全には対応できませんが、複雑でない文書やワークシートならこれで十分です。Openofficeに最低限のユーザーサポートをつけたものが[[Starsuite:http://www.sourcenext.com/products/starsuite8/]]という名前で販売されています。教育機関だとこのソフトがインストールされているかもしれません。 今度は「csv形式」でファイルを保存します。保存したファイルををエディタで開くと、こんな風になっています。これがCSV形式のデータです。 "x1","X2","Y" 1.5,1,-3.2 2.3,3.9,2 3.8,8.6,2.2 4.2,15.25,6.3 5.6,28.6,5.8 6.3,32.68,12.5 このデータがsample3.csvという名前であったとします。Rに読み込むためのプログラムは、次の通りです。 dset <- read.csv("d/sample3.csv", header=TRUE) --Excel形式で公開されているデータは、たいてい罫線やフォントなどの書式情報を含んでいます。これを含んだままExcelでひとつの表にまとめ直し、csv形式で保存しようとすると、書式も保存しようとするようです。その結果、上記のようなデータにならず、Rが読み込めない謎のデータができてしまいます。 --その場合はExcelでデータを呼び出し、''まず現在の状態を別の名前で保存したあと''Excelのメニューで「編集→すべて選択」、つづいて「編集→クリア→書式」を実行します。画面の上の表がどことなくシンプルになったはずです。そのあと「ファイルの種類」に「CSV(カンマ区切り)」を選んで保存すればOK。 --その場合はExcelでデータを呼び出し、''まず現在の状態を別の名前で保存したあと''Excelのメニューで「編集→すべて選択」、つづいて「編集→クリア→書式」を実行します。画面の上の表がどことなくシンプルになったはずです。 --ただし変数名が並ぶ1行目だけは「値」でなく「文字列」でないとRが困ってしまうので、1行目全体を選択し、「書式→セル→表示形式」に「文字列」を選びます。 --そのあと「ファイルの種類」に「CSV(カンマ区切り)」を選んで保存すればOK。 --「編集→クリア→書式」のところ、ひとつ下の「編集→クリア→すべて」を選ぶと全データが消えます。精神衛生のため先にセーブを。やってしまった人はすぐ「編集→元に戻す」を実行すると助かります。たぶん。たいてい。 **データの保存 [#ia716a2d] Rで計算して出した変数を表計算ソフトで加工したいときや、ワープロやエディタでちょっと作ったデータをこれからは表計算ソフトで管理したいときは、RからデータをCSV形式で保存できると便利です。例えばd/sample4.csvにデータ集合dsetを保存するときは、 write.csv(dset, file="d/sample4.csv", quote=TRUE) と入力します。quote=TRUEは、数字と区別するために、変数名など文字のデータは""で囲んでおけという指示です。CSVファイルには""が書き込まれますが、表計算ソフトを起動してデータを読んだときには、この""は表示されません。 sample4.csvをエディタで読むと、 "","x1","X2","Y" "1",1.5,1,-3.2 "2",2.3,3.9,2 "3",3.8,8.6,2.2 "4",4.2,15.25,6.3 "5",5.6,28.6,5.8 "6",6.3,32.68,12.5 となっています。左端に名前のない変数があって、データ番号がデータとして入っています。 *読み込んだデータを使う [#t463e860] dsetの変数x1は、プログラムの中ではdset$x1と書かなければなりません。しかしだいたい、一度に使う変数はみんなひとつのデータセットにあるはずですから、いちいちdsetと書くのは面倒です。このときに使うのがattachコマンドで、 attach (dset) とプログラムの最初のほうに書いておくと、以後出てくる変数はdsetの中にあるんじゃないか、とRが勝手に探してくれます。 上記のsample3.csvは[[R動作テストプログラム]]の最初に書いてあるのと同じデータでしたね。sample3.csvを使って同じ計算をするプログラムは、こうなります。 dset <- read.csv("d/sample3.csv", header=TRUE) attach (dset) eq1 <- lm(y ~ x1 + x2) summary (eq1) eq2 <- dwtest(eq1) summary (eq2) eq3 <- arma (x1, c(1,0)) summary (eq3) [[R動作テスト結果]]と同じ結果が表示されるか、試してみてください。 *Rのデータエディタを使う [#n47ab14b] [[R-Tipsの第29日目:http://cse.naro.affrc.go.jp/takezawa/r-tips/r/27.html]]に紹介されているdata.entryは、かなり古いもののようで、入力したものをうまく保存する方法が今のところ見つかりません。ところが、この記事で使っているRgui(R Commander)では、この機能を呼び出し、(ある意味で)保存する方法がちゃんとあります。「編集」→「データエディタ」です。「データフレームまたは行列の名前」を尋ねられますから、いま扱っているデータフレームの名前がdsetなら、「dset」と入力します。 fix(dset) とコマンドを入力しても、同じものが起動します。 一番上にある変数欄を編集すれば、変数を追加することも、変数名を変更することもできます。「保存」するコマンドは特になく、データエディタのウインドウを閉じると編集したデータフレームが保存されます。逆に、データエディタを閉じるまで、ほかのことはできません。 ただしこの方法では、すでにコンピュータの上にあるデータフレームや行列しか扱えません。この記事では、コマンドを使ってデータフレームを定義する方法を避けて通っています。変数名の入った表を別に作るほうが直感的で、目で見たとおりのデータを入出力できるからです。興味のある方は、[[R-Tipsの第27日目:http://cse.naro.affrc.go.jp/takezawa/r-tips/r/25.html]]を読んで挑戦してください。 もうひとつ困った点は、こうして書き換えられたデータはまだメモリの上にだけあって、ハードディスクなどに保存されていないことです。Rguiを終了すれば、データに加えた変更は消えてしまいます。read.csv命令やread.table命令の逆操作をするwrite.csv命令やwrite.table命令があることはあるのですが、この操作を忘れたり間違えたりすると、変更したデータが失われてしまいます。ですからよほど慣れた人が、少しだけデータを変更する場合を除いて、この機能を使うことはお勧めしません。どうしてもという人は[[Rのデータエディタ]]を見てやってみてください。 *実行結果の保存方法 [#za7403c0] プログラムの実行結果のログは「ファイル」→「履歴の保存」や「ファイル」→「ファイルを保存」で保存できます。 プロット結果などの図は右クリックするとコピー(クリップボード行き)や保存を選べます。