photo by:jinterwas
統計解析や信号処理をする際、元データはcsvファイルで保存されていることがあると思います。複数のデータで同じ処理をするなら、可能限り自動で処理させて手抜きしたいですよね。
Rならプログラムを書かなくてもそれが実現できます。
覚えること
Rでcsvファイルを読み書きするために覚えることは、たった3つしかありません。
- 作業ディレクトリを確認する
- csvファイルを読み込む
- csvファイルに書き出す
それぞれ、順番に説明していきます。
作業ディレクトリを確認する
読み込みたいファイルは、作業ディレクトリに保存されている必要があります。作業ディレクトリと言われると、え?(・◇・。)?となってしまいそうですが、
簡単に言えばRが認識しているフォルダに読み込みたいcsvファイルが保存されている必要がある、ということです。
現在の作業ディレクトリを確認するには、Rを起動して
getwd()
と入力します。すると、現在の作業ディレクトリが表示されるので、この場所に読み込みたいcsvファイルを保存してください。
作業ディレクトリの変更(WINDOWSの場合)
作業ディレクトリを変更する場合は、ファイル>ディレクトリの変更をクリックするすると、フォルダーの参照というWINDOWが開くので作業ディレクトリに設定したいフォルダの場所を指定してください。
ショートカットを右クリックして作業フォルダーの変更でもOKです。
作業ディレクトリの変更(macの場合)
その他>作業ディレクトリの変更 から変更できます。
csvファイルを読み込む
csvファイルを読み込むにはread.csv()を使いますが、csvファイルの一行目の扱い方によって入力する内容が少し変わります。
上の画像のように、一行目が各列の列名になっているcsvファイルを読み込む場合、header=Fを書くかどうかで結果が変わります。
test.csvというファイルを、header=Fを書いた場合と書かない場合の違いは下のようになります。
> data=read.csv("test.csv") > data A B C 1 1 2 3 2 4 5 6 3 7 8 9 > data=read.csv("test.csv",header=F) > data V1 V2 V3 1 A B C 2 1 2 3 3 4 5 6 4 7 8 9 >
header=Fを書いていない場合、一行目のA,B,Cが列の名前として認識されていて二行目からがデータとして認識されています。
header=Fを書いた場合は、一行目からデータとして認識されているので、A,B,Cもデータに含まれています。
自分の読み込みたいファイルに合わせて、header=Fが要るかどうか判断してください。
csvファイルに書き出す
読み込んだcsvファイルに何かしらの処理をして、その結果をcsvに書き出すにはwrite.csv()を使います。
先ほどのtest.csvを読み込んで、数字を全てマイナス1した結果をouttest.csvに書き出す例を示します。
> data=read.csv("test.csv") > data A B C 1 1 2 3 2 4 5 6 3 7 8 9 > data2=data-1 > data2 A B C 1 0 1 2 2 3 4 5 3 6 7 8 > write.csv(data2,"outtest.csv",row.names=F) >
書き出したcsvファイルの中身をみると、ちゃんと最初のデータからマイナス1した結果が保存されています。
row.names=Fを省略すると、一列目に列番号が挿入されて列数がかわってしまうので注意してください。
最後に
Rを使えば、プログラムが書けない人でも簡単にcsvファイルの読み書きができます。
4月から研究室配属された学生さんは、とりあえず実験してデータはあるけど扱いに困っている、なんてことがこれからあると思います。
Rを使えるようになっていて損はないですよ!