データフレームとは data.frame クラスを持つリストのことであり,数値ベクトルや文字ベクトル,因子ベクトル(文字型ベクトル)などの異なる型のデータをまとめて1 つの変数として持っている.外見は行列と同じ 2 次元配列であるが,データフレームの各行・列はラベルを必ず持ち,ラベルによる操作が可能である点が普通の行列と異なる.しかも各列の要素の型はバラバラでも構わないので,ベクトルやリストで持っているデータをデータフレームに変換することで統計解析がやりやすくなる.
数値ベクトルと因子はそのままの状態で含まれ,非数値ベクトルは因子に強制変換される.データフレームに変数として現れるベクトル構造は全て同じ「長さ」を,行列構造は同じ「行サイズ」を持たなければならない.
データフレームを作成する方法は以下のような方法がある.
まずは前者の方法を紹介する.「性別」「身長」「体重」データをベクトルで用意しておき,それらを関数 data.frame() で 1 つのデータフレームに変換する.
data.frame(列名1 = ベクトル1, 列名2 = ベクトル2, ... ) |
実際に関数 data.frame() でデータフレームを作成してみる.
|
データフレーム x
|
行列や配列からデータフレームを作成することも出来る.例えば行列 x をデータフレームに変換する場合は data.frame(x) とすればよい.ラベル名を指定しない場合は自動でラベル名が振り分けられる.
データフレーム x を生成すると,「データフレーム x の『性別』データ」や「データフレーム x の『体重』データ」としてデータを取り出すことが出来る.取り出す方法は「データフレーム名$列名」などとすればよい.
x$HEIGHT # データフレーム x の『身長』データ [1] 158 162 177 173 166 mean( x$WEIGHT ) # データフレーム x の『体重』データの平均 [1] 59.8 x[,2] # データフレーム x の 2 列目を表示する [1] 158 162 177 173 166 |
データフレームという形にすることで,要素それぞれに『性別』や『身長』などの属性を付けることに成功した.その恩恵の一つとして,関数 summary() を使うことでデータフレームの列ごとの特徴を見ることが出来る.すると上から順に「最小値,第 1 四分位点,中央値,平均,第 3 四分位点,最大値」が表示される.
summary(x)
SEX HEIGHT WEIGHT
F:2 Min. :158.0 Min. :51.0
M:3 1st Qu.:162.0 1st Qu.:55.0
Median :166.0 Median :57.0
Mean :167.2 Mean :59.8
3rd Qu.:173.0 3rd Qu.:64.0
Max. :177.0 Max. :72.0
|
関数 by(データフレーム,層別する変数,関数名) を使うことでデータフレームの層ごとに集計を行うことができる.以下では,データフレーム x について男女別に要約統計量を求めている.
by(x, x$SEX, summary)
x$SEX: F
SEX HEIGHT WEIGHT
F:2 Min. :158 Min. :51
M:0 1st Qu.:159 1st Qu.:52
Median :160 Median :53
Mean :160 Mean :53
3rd Qu.:161 3rd Qu.:54
Max. :162 Max. :55
------------------------------------------------------------
x$SEX: M
SEX HEIGHT WEIGHT
F:0 Min. :166.0 Min. :57.00
M:3 1st Qu.:169.5 1st Qu.:60.50
Median :173.0 Median :64.00
Mean :172.0 Mean :64.33
3rd Qu.:175.0 3rd Qu.:68.00
Max. :177.0 Max. :72.00
|