■Rデータをテキストファイルに出力するには

.
.

この頁ではRで得られたデータを他のソフト,例えばExcelなどで利用するためにテキストファイルとして出力する方法を扱う

【目次】・・・下記のどの方法でもできる

(1) Rコマンダーを用いてカンマ区切り,タブ区切りのテキストファイルに出力する方法

(2) Rコマンダーのスクリプトウインドウに直接コマンドを書き込む方法

(3) Rコンソールに直接コマンドを書き込む方法

他の解説と同様に,Excel,R,Rコマンダーが起動されているものとする:
○Excel2007以降の場合
Excelを起動する
→アドイン→RExcel→Start R
→アドイン→RExcel→RCommander→with seprate menus
○Excel2002の場合
Excelを起動する
→RExcel→Start R
→RExcel→RCommander→with seprate menus
いずれもRとRcommanderを起動してからExcelを最小化しておくと作業しやすい.

(0) 例としてRのパッケージにあるtreesというデータセットを読み込んで,作業を行い,結果をテキストファイルとして保存する場合を考える.
 右のようなデータセットがtreesというデータセット名で読み込まれており,アクティブデータセットになっているものとする.
○例としてパッケージデータをインポートしてアクティブデータセットにする.
(Rコマンダーのメニューから)
データ→パッケージ内のデータ→アタッチされたパッケージからデータセットを読み込む→Datasetsをダブルクリック→treesをダブルクリック(データセット名にtreesが書き込まれる)→OK→
次の表1のようなデータがtreesというデータセット名で読み込まれる.
表1
  Girth Height Volume
1 8.3 70 10.3
2 8.6 65 10.3
3 8.8 63 10.2
4 10.5 72 16.4
5 10.7 81 18.8
・・・ ・・・ ・・・ ・・・
・・・ ・・・ ・・・ ・・・
29 18 80 51.5
30 18 80 51
31 20.6 87 77


(1) Rコマンダーを用いてカンマ区切り,タブ区切りのテキストファイルに出力する方法
(Rコマンダーのメニューから)
データ→アクティブデータセット→アクティブデータセットのエクスポート→
 ここで選ぶ区切り記号によってExcelからテキストファイルとして読み出すときの作業が変わる.
 ▲もしフィールドの区切り記号として「空白」を選んだ場合には,長さの異なるデータが含まれているときに,これをExcelからインポートする際にどのように境界線を選んでもうまく分離されない.
 ◎したがって, 右図のようにフィールドの区切り記号として「タブ」または「カンマ」を選ぶ方が操作しやすい.

名前をつけて保存するものとする.(abc.txtなど)


※要点
 タブまたはカンマで区切ると後の処理が楽になる.
 行名をつけるのチェックを外すと下記の解説のように列ラベルがずれるのを防ぐことができる.


(2) Rコマンダーのスクリプトウインドウに直接コマンドを書き込む方法

write.table(trees , "C:/data/trees1.txt" , sep="\t")
write.table()がコマンド

treesのところにデータセット名を入れる

C:/data/trees1.txtのところに書き込むファイル名を入れる.じぶんのパソコンのフォルダ名を書くときに C:\data\などと書くことが多いが,¥マークを書き込むとバックスラッシュに変換されてうまくいかない.ここではスラッシュ(/)を用いる.

\tのところに区切り記号を入れる.カンマ区切りにするときはsep=","とする.
コマンド行をマウスでポイントして[実行]ボタンをクリックする.(もし複数行のコマンドから成るときは,それらの実行したいコマンド全体をドラッグして反転表示しておいてから[実行]ボタンをクリックする.)
以上のように行うと,右の表2のようなテキストファイルができ,列ラベル"Girth" "Height" "Volume"が1列ずつ前にずれてしまう結果,Excelで読みだしたときに列ラベルがずれてしまう.

write.table(trees , "C:/data/trees1.txt" , sep="\t",row.names=FALSE)
row.names=FALSEにより行ラベル"1","2"などが書き込まれないようにできる.
もし,列ラベル("Girth" "Height" "Volume")も不要ならcol.names=FALSE も書き込むとよい.

(3) Rコンソールに直接コマンドを書き込む方法
 上記とほぼ同様であるが,コマンドを実行するためにはその行のどこかでEnterキーを押す.
(右の【要点】には改行コードが書いてないので,実行する前に左矢印キーを用いてコマンドを書き換えることができる.ただし,複数行にわたるコマンドをコピー・貼り付けで行うときは,行末に改行コードが書き込まれていれば,貼り付けたときに実行されるので書き換えられない.)
表2
"Girth" "Height" "Volume"
"1" 8.3 70 10.3
"2" 8.6 65 10.3
"3" 8.8 63 10.2
"4" 10.5 72 16.4
"5" 10.7 81 18.8
・・・ ・・・ ・・・ ・・・
"27" 17.5 82 55.7
"28" 17.9 80 58.3
"29" 18 80 51.5
"30" 18 80 51
"31" 20.6 87 77
※ Rコマンダーを用いてスクリプトウインドウに書き込むのとRコンソールに書き込むのとではほとんど同じ効果が得られるが,Rコマンダーに書くと[実行]ボタンをクリックするまではコマンドを書き換えることができる.
 そこで,左の灰色で示したコマンドをコピーしてスクリプトウインドウに貼り付けて,ファイル名のみ書き換えるとタイプミスを防げる.
【要点】 (1)次のコマンドをコピーして, (2)Rのスクリプトウインドウに貼り付け, (3)ファイル名を必要に応じて書き換えてから, (4)[実行]ボタンをクリックするとよい.

write.table(trees , "C:/data/trees1.txt", sep="\t", row.names=FALSE)

上記のコマンドで行うと,Excelから読み込んだとき次のような形にできる.(行ラベルなし)
表3
Girth Height Volume
8.3 70 10.3
8.6 65 10.3
8.8 63 10.2
10.5 72 16.4
・・・ ・・・ ・・・
17.5 82 55.7
17.9 80 58.3
18 80 51.5
18 80 51
20.6 87 77

※以上の(1)(2)(3)いずれの場合においても,カンマ区切りを選択したときでも特に(・・・.csv) Comma Separated Values の拡張子を付けずに・・・.txtとすればよい.

.
○Excelからテキストファイルをインポートするには

上記のように作成したテキストファイルを,Excelから読みだす(インポートする)ときは,右図のような画面で区切り記号を選択することになるので,先に保存したときにどの区切り記号を用いたのかを覚えておく方がよい.
 区切り記号がスペースであるときは,区切り記号としてのスペースとデータとしてのスペースの見分けがつかないので,下欄で区切りとなる線を左クリックしたり,既存の線をドラッグして動かす必要がある.

...メニューに戻る ..Rのメニューに戻る