データはどこに置くか †Windows版Rの場合、Rのプログラムに出てくるフォルダは、何も指定しなければ「bin」というフォルダのことだとみなされます。 そこで、このbinに新規フォルダを作って、そこにデータやプログラムを入れるようにすると、プログラムを短く書くことができます。このページでは、「d」というフォルダを作ることにします。 こうしておくと、dにあるsample.txtはc:\Program Files…と長く書く代わりに、短く「d/sample.txt」と書けば参照できます。\はWindows版Rの場合、問題を起こすようで、代わりに/を使います。 データはプログラムと同じファイルにするべきか? †R動作テストプログラムのように、数値データとそれを操作するプログラムをひとつのファイルに書くこともできます。しかしいろいろ試行錯誤するとき、書き変えるのはもっぱらプログラムです。 データは別のファイルにして、プログラムの最初に読み込むようにしておけば、プログラムとデータの対応関係もプログラムを読めばわかりますし、プログラムをいじくり回すときに、データの羅列をいちいち目にしなくて済みます。 2種類の方法だけ †いろいろ方法はありますが、2種類の方法だけ御紹介します。 ワープロソフト、エディタなどを使う †Wordなどのワープロソフト、Windowsについてくるメモ帳、フリーソフトのVXEditorのようなエディタを使ってデータファイルを作ることもできます。
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の場合「書式なし」を選びます。 「保存」を選ぶと色々オプションを聞いてきますが、いっさい修正しないで「OK」してください。この場合、sample.txtというファイルができます。うっかり名前のところに「sample.txt」と書くと「sample.txt.txt」ができてしまいますから注意。 メモ帳なら「書式なし」ではなく「テキスト文書(*.txt)」という「ファイルの種類」の選択肢があります。 セーブしたファイルをRに読み込むとき、読み込んだデータ全体(データセット)に名前をつけます。例えばdsetという名前をつけるとします。 読み込みは、この一行で済みます。 dset <- read.table("d/sample.txt", header=TRUE) header=TRUEは、1行目が変数名だよ、とRに教える表記です。 表計算ソフトを使う †大きなデータを打ち込んで直すとき、ワープロでは不自由です。インターネットで政府機関などから多くのデータが提供されていますが、それもたいていExcelなどのデータ形式です。初期の練習が終わったら、こちらのやり方に慣れましょう。 Excelが最初からインストールされていないパソコンでは、Openofficeの利用をお勧めします。これは無料でダウンロードできる(パソコン雑誌の付録CDにもよく入っています)ソフトで、MS Officeの機能をほとんどカバーします。Wordとの互換性は完全ではなく、罫線が縦横に細かく走った役所の書類をWordファイルで読ませると完全には対応できませんが、複雑でない文書やワークシートならこれで十分です。Openofficeに最低限のユーザーサポートをつけたものがStarsuiteという名前で販売されています。教育機関だとこのソフトがインストールされているかもしれません。 今度は「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)
データの保存 †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 となっています。左端に名前のない変数があって、データ番号がデータとして入っています。 読み込んだデータを使う †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のデータエディタを使う †R-Tipsの第29日目に紹介されているdata.entryは、かなり古いもののようで、入力したものをうまく保存する方法が今のところ見つかりません。ところが、この記事で使っているRgui(R Commander)では、この機能を呼び出し、(ある意味で)保存する方法がちゃんとあります。「編集」→「データエディタ」です。「データフレームまたは行列の名前」を尋ねられますから、いま扱っているデータフレームの名前がdsetなら、「dset」と入力します。 fix(dset) とコマンドを入力しても、同じものが起動します。 一番上にある変数欄を編集すれば、変数を追加することも、変数名を変更することもできます。「保存」するコマンドは特になく、データエディタのウインドウを閉じると編集したデータフレームが保存されます。逆に、データエディタを閉じるまで、ほかのことはできません。 ただしこの方法では、すでにコンピュータの上にあるデータフレームや行列しか扱えません。この記事では、コマンドを使ってデータフレームを定義する方法を避けて通っています。変数名の入った表を別に作るほうが直感的で、目で見たとおりのデータを入出力できるからです。興味のある方は、R-Tipsの第27日目を読んで挑戦してください。 もうひとつ困った点は、こうして書き換えられたデータはまだメモリの上にだけあって、ハードディスクなどに保存されていないことです。Rguiを終了すれば、データに加えた変更は消えてしまいます。read.csv命令やread.table命令の逆操作をするwrite.csv命令やwrite.table命令があることはあるのですが、この操作を忘れたり間違えたりすると、変更したデータが失われてしまいます。ですからよほど慣れた人が、少しだけデータを変更する場合を除いて、この機能を使うことはお勧めしません。どうしてもという人はRのデータエディタを見てやってみてください。 実行結果の保存方法 †プログラムの実行結果のログは「ファイル」→「履歴の保存」や「ファイル」→「ファイルを保存」で保存できます。 プロット結果などの図は右クリックするとコピー(クリップボード行き)や保存を選べます。 |