テキストファイルに入っているデータを,データフレームとして R に読み込む方法を紹介する.たたき台のデータとして,ある 5 人の健康診断データを紹介する.内容は性別(sex : F→女,M→男),身長(height),体重(weight)のデータである.
|
sex(性別) |
height(身長) |
weight(体重) |
|
F |
158 |
51 |
|
F |
162 |
55 |
|
M |
177 |
72 |
|
M |
173 |
57 |
|
M |
166 |
64 |
作業ディレクトリの変更
データを扱う際,まず,データがあるディレクトリ(フォルダ)に作業ディレクトリを変更する必要がある.作業ディレクトリの変更方法は こちら を参照されたい.
以下に出てくるデータは全て作業ディレクトリにあるものとする.もし,データが作業ディレクトリに無い場合は,ファイルを指定する場所にファイルのパスを指定すればよい(例:x <- read.table("C:/data.txt") ).
data01.txt
のようなデータは,関数 read.table() で読む.データファイルに列名が無いので,R
が勝手に列名を決めている.
|
|
data02.txt
のように,1行目にコメントが入っているデータは,関数 read.table() の引数 skip(何行読み飛ばすか)に
1 を指定する.
|
|
data03.txt
のように,1行目に列名が入っているデータは,関数 read.table() の引数 header(列名があるか否か)に
T を指定する.
|
|
data04.txt
のように,1行目にコメント,2行目に列名が入っているデータは,引数 header に T
を,skip(何行読み飛ばすか)に 1 を指定する.
|
|
data05.txt
のように,データ間がコンマ( ,)で区切られている場合は,引数 sep(データの区切り文字)に
"," を指定する.また,タブで区切られている場合は "\t" を指定すればよい.
|
|
関数 read.table() の引数を以下に示す.例えば,row.names と col.names にそれぞれ行名と列名を示す文字型ベクトルを指定することができる.
|
引数 |
機能 |
|
sep = "" |
データとデータの区切り文字を指定する. |
|
skip = 0 |
最初の行 から読み飛ばす行数を指定する.指定しない場合はファイルの 1 行目から読む. |
|
nrows = -1 |
何行目まで読むかを指定する .指定しない場合(負の値の場合)はファイルの終わりまで読む). |
|
header = F |
「1行目は列名が書かれている」か否かを指定する.列名が書かれている場合で,F を指定すると不具合が生じる. |
|
comment.char |
コメント行を表す記号(デフォルトは \# )を指定する. |
|
row.names=NULL |
1 から始まる番号が行名として生成される. |
|
row.names="列名" |
指定した列のデータが行名として使われる.使われた列はデータフレームの変量としては取り除かれることになる. |
|
row.names=列番号 |
上記と同じ. |
|
row.names=文字型ベクトル |
ベクトルの各要素が行名となる.ただし行数と同じ長さのベクトルを指定する. |
関数
rownames(データフレーム名) と colnames(データフレーム名) で,それぞれ行ラベル,列ラベルを取り出すことも出来る.
また,read.table() のラッパークラスとして以下のような関数が用意されている.
|
関数 |
header |
sep |
quote |
dec |
用途 |
|
read.csv("ファイル名") |
T |
"," |
"\"" |
"." |
区切りがコンマの場合 |
|
read.csv2("ファイル名") |
T |
";" |
"\"" |
"," |
区切りがコロン&小数点がコンマの場合 |
|
read.delim("ファイル名") |
T |
"\t" |
"\"" |
"." |
区切りがタブの場合 |
|
read.delim2("ファイル名") |
T |
"\t" |
"\"" |
"," |
区切りがタブ&小数点がコンマの場合 |
|
read.fwf("ファイル名") |
F |
"\t" |
"\"" |
"." |
一行の各欄の桁数 widths を指定して読み込む |
例えば
data05.txt は関数 read.csv() を用いて読み込むことが出来る.
|
|
Windows
ユーザーの方は,フォルダの中の『フォルダオプション』から『拡張子を表示しない』のチェックを外した方が良い.チェックを外したくない方はテキストファイルを開いて
data という名前で保存する.
Windows
版 R では,"C:/data.txt" を "C:\data.txt" とするとエラーが出るので注意.どうしても
\ を使いたい場合は \\ で \ を表すことが出来る.
R
ではオクタル表記や改行等の特殊文字を表現する為のエスケープ文字として 0x5c が使われます.たまたま
win が C:\hoge と一般に表記するため,C:\\hoge 等と書かねばならないだけです。幸いな事に
C 言語の POSIX 準拠のおかげで,/ をディレクトリの識別文字として扱えるので c:/hoge
でもアクセスできます.\ を表すには \\ とするしか無いのですが、今後国際化の過程で
\ → 0xA5(UTF-8) とかアレゲな事になるかもしれません.MS-CP932 , SHIFT_JIS
等からコード変換でもよく過去に話題になりました.(なかまさんより)