R のデータフレーム:
概要と作成
UB3/informatics/r/dataframe
このページの最終更新日: 2024/09/30その他、データフレーム関連のページへのリンク
広告
概要: データフレームとは
R にはさまざまな データ型 があるが、データフレームはそのうちの一つで、データを格納した表または行列のような概念である。Excel、MySQL、MATLAB などに馴染みがあればわかりやすいだろう。例えばこのようなデータである。
Blood_type | Body_weight | |
1 | A | 65 |
2 | A | 59 |
3 | B | 45 |
R のデータフレームには、次のような基本ルールがある。
- 各行、各列が
必ずラベルをもち 、ラベルによる操作が可能である点が行列 matrix と異なる (2)。この点は データフレームと行列の違い で詳しく説明している。 - 行列は数値のみであるが、データフレームは文字列や数値が混在していても OK。「身長と血液型のように、numeric型と character型を混在させた行列」としてデータフレームを定義している サイト もある。
整然データ の形で作成すると読み込みやすい (参考: 整然データとは何か)。つまり、1 つの列が変数、1 つの行が観測を表し、かつ 1 つのセルには単一の値のみが入っているデータである。- ラベルにスペースや特殊記号は使えない。読み込んだときに含まれているとドット . に変換される。元データは csv などで保存することが多いだろうが、この際に気をつけたい。
関連の深いページに ベクターの取り扱い がある。
データフレームを作成する
データフレームは、data.frame() 関数で作成できる。
ベクターを結合して作成する
以下のように列名を指定するのが基本である。
既存のベクターがないときには、以下のように data.frame コマンド内で指定しても OK。
のようにする。以下のように > A とすることで、データフレームの内容を確認できる。
> A
Blood_type | Body_weight | |
1 | A | 65 |
2 | A | 59 |
3 | B | 45 |
データフレームを結合して作成する
R では複数のデータフレームを結合することができる。
このように 2 つのデータフレーム A と B があり、それらを結合したい場合には
cbind は column bind なので、列として結合する。つまり
rbind は row bind で、
C = data.frame(A + B) としたくなるが、これだとデータ構造を保ったまま値が合計される。上の例だと、Body_weight の 65 と、同じ位置にある Height の 165 が足される感じになる。実際には試していないので、文字列を含んでいる場合にどうなるのかわからない。いずれにせよ、データフレームの結合は rbind または cbind と覚えておく。
Excel ファイルや csv ファイルを読み込んで作成する
更新予定。read.xlsx() 関数、read.csv()、read_csv() 関数などをよく使っている。テキストファイルからのデータ読み込み も参照のこと。
for loop 用に空のデータフレームを作成する
for loop を回すときに、各 loop ごとの結果をデータフレームに入れたい場合がある。このとき、for loop の前に結果を格納する空のデータフレームを作っておく必要がある。
たぶん、リストの場合は NULL でも大丈夫だが、データフレームの場合は行・列の数を合わせておかないとエラーになると思う。
data.framere() と matrix() を組み合わせて使うようだ (参考)。nrow, ncol で行と列の数を指定できる
colnames(df) <- c("column1", "column2")
広告
References
- Rの data frame から行や列を選択して取り出す. Link.
- R-Tips 39. データフレーム事始. Link.
- 井関龍太のページ. Rでクリップボードからデータを読み込む. Link: Last access 2018/12/09.
- R:データフレームの列を入れ替える・削除する。 Link: Last access 2020/06/09.
コメント欄
サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。