ホーム‎ > ‎R Starter‎ > ‎

Rデータ入力とグラフィックス

データフレーム

実験・観測データや、統計データは表の形にまとめられることが多い。
Rはこれを扱うためのデータ形式を持っている。
それをデータフレームと呼ぶ。

データフレームはこれまで行ってきたようにc()を使って作ることもできるが、
コンピュータを使って処理したくなるような大量のデータをそのようにして作ることは現実的ではない。
データを別のファイルに用意し、read.table()関数を使ってRに読み込むのがよい。

標準的なデータフレームは次のように
  • データは縦方向に並ぶ
  • スペースやタブで区切られる
  • 1行目に見出し
  • 各行に行毎の見出し(番号)
という形をしている。

データがホームディレクトリにあるsample.dataというファイルに入っている場合
(ファイルはこのページの添付ファイルにあるのでダウンロードしても可、自分でテキストエディタを使って作ってもよし。)

$ cat ~/sample.data
     data1   data2  data3 data4
1    2       0.23   23.1    aa    
2    4       0.34   -44.2   cd
3    4       0.33   3.0     dd
4    7       0.54   9.0     rf
5    7       0.29   -8.2    wd
6    3       0.98   7.1     cd
7    9       0.11   8.3     ad
8    0       0.54   -6.9    aa 
9    1       0.32   2.3     tt

データは整数、浮動小数点数、文字列等何でもよい。

このファイルに入っているデータをRで
データフレームとして読み込むためには次のようにする。

> D <- read.table("~/sample.data")
> D
  data1 data2 data3 data4
1     2  0.23  23.1    aa
2     4  0.34 -44.2    cd
3     4  0.33   3.0    dd
4     7  0.54   9.0    rf
5     7  0.29  -8.2    wd
6     3  0.98   7.1    cd
7     9  0.11   8.3    ad
8     0  0.54  -6.9    aa
9     1  0.32   2.3    tt

データフレーム内のデータは次のように参照する。
> D$data1
[1] 2 4 4 7 7 3 9 0 1
> D$data2
[1] 0.23 0.34 0.33 0.54 0.29 0.98 0.11 0.54 0.32
> D$data3
[1]  23.1 -44.2   3.0   9.0  -8.2   7.1   8.3  -6.9   2.3
> D$data4
[1] aa cd dd rf wd cd ad aa tt
Levels: aa ad cd dd rf tt wd 
> mean(D$data1)
[1] 4.111111
> var(D$data1)
[1] 9.111111 
> attach(D)         # よく使うデータは省略して参照ができる
> data1            # このように
[1] 2 4 4 7 7 3 9 0 1
> data4
[1] aa cd dd rf wd cd ad aa tt
Levels: aa ad cd dd rf tt wd
> data1 - mean(data1)     # ベクトルとして計算することもできる
[1] -2.1111111 -0.1111111 -0.1111111  2.8888889  2.8888889 -1.1111111
[7]  4.8888889 -4.1111111 -3.1111111
> detach(D)    # 使い終わったら
> data1
エラー:オブジェクト "data1" は存在しません

データに行番号がついていない場合:

$ cat ~/nonumsample.data
data1   data2  data3 data4
2       0.23   23.1    aa    
4       0.34   -44.2   cd
4       0.33   3.0     dd
7       0.54   9.0     rf
7       0.29   -8.2    wd
3       0.98   7.1     cd
9       0.11   8.3     ad
0       0.54   -6.9    aa 
1       0.32   2.3     tt

このようにする。

> D.nonum <- read.table("~/nonumsample.data", header=TRUE)
> D.nonum
  data1 data2 data3 data4
1     2  0.23  23.1    aa
2     4  0.34 -44.2    cd
3     4  0.33   3.0    dd
4     7  0.54   9.0    rf
5     7  0.29  -8.2    wd
6     3  0.98   7.1    cd
7     9  0.11   8.3    ad
8     0  0.54  -6.9    aa
9     1  0.32   2.3    tt

このように、行番号をRが適当につけてくれる。

解析したいデータがこのような形をしていない場合は、
Unixの道具やperl, rubyなどを使ってあらかじめ上記の形に整形し、
その上でRに読み込むのがよいだろう。

グラフィックス

データがあると、グラフに描いてみたくなるのが人情というものである。

> plot(D$data1)      # X軸に行番号、Y軸にdata1
> plot(D$data1, D$data2)    # X軸にdata1, Y軸にdata2 (scatterplot)
> plot(D$data1, D$data2, xlab="data 1", ylab="data 2", main="KS data")  # ラベルを付ける
> barplot(D$data2)   # 棒グラフ
> pie(D$data2)     # 円グラフ

その他いろいろなグラフを描く関数が用意されている。

もちろん関数のグラフも描ける。

> curve(sin(x), -pi, pi)    #  -π から π まで

画面で見るだけでなく、ファイルに保存することもできる。

> plot(D$data4)             # 文字列の出現頻度の棒グラフ
> png("sampledata.png")   # PNGフォーマットでファイルsampledata.pngに書き出す
> plot(D$data4)             # もう一度;画面には出ない
> dev.off()                     # 出力を元に戻す

PostScript, PDF, JPEGなどの出力フォーマットが用意されている。


最後に、R For Further Studyに進んでください。

ċ
nonumsample.data
(0k)
Shingo Ichii,
2010/04/06 22:34
ċ
sample.data
(0k)
Shingo Ichii,
2010/04/06 22:34
Comments