R データフレームの取り扱い:
作成、削除、合成など

UB3/informatics/r/dataframe

このページの最終更新日: 2022/06/06

  1. 概要: データフレームとは
  2. データフレームを作成する
    • ベクターを結合して作成する
    • データフレームを結合して作成する
    • csv ファイルを読み込んで作成する
  3. データフレームから特定の列を抽出する
  4. データフレームから特定の列・行を除く
  5. データフレームの検索と置換
  6. データフレームの行名をうまく利用する

広告

概要: データフレームとは

R にはさまざまな データ型 があるが、データフレームはそのうちの リストの一種 で、数値を格納した表または行列のような概念である。ExcelMySQL、MATLAB などに馴染みがあればわかりやすいだろう。例えばこのようなデータである。


Blood_type Body_weight
1 A 65
2 A 59
3 B 45

R のデータフレームには、次のような基本ルールがある。

  • 各行、各列が 必ずラベルをもち、ラベルによる操作が可能である点が行列 matrix と異なる (2)。この点は データフレームと行列の違い で詳しく説明している。
  • 整然データ の形で作成すると読み込みやすい (参考: 整然データとは何か)。つまり、1 つの列が変数、1 つの行が観測を表し、かつ 1 つのセルには単一の値のみが入っているデータである。
  • ラベルにスペースや特殊記号は使えない。読み込んだときに含まれているとドット . に変換される。元データは csv などで保存することが多いだろうが、この際に気をつけたい。

データフレームを作成する

データフレームは、data.frame 関数で作成する。


ベクターを結合して作成する

以下のように列名を指定するのが基本である。

data.frame(列名1 = ベクター1, 列名2 = ベクター2, ...)

既存のベクターがないときには、以下のように data.frame コマンド内で指定しても OK。

A = data.frame(Blood_type = c("A","A","B"), Body_weight = c(65,59,45))

のようにする。以下のように > A とすることで、データフレームの内容を確認できる。

> A

Blood_type Body_weight
1 A 65
2 A 59
3 B 45


データフレームを結合して作成する

R では複数のデータフレームを結合することができる。

A = data.frame(Blood_type = c("A","A","B"), Body_weight = c(65,59,45))

B = data.frame(Hair_color = c("Black","Black","Brown"), Height = c(165,159,148))

このように 2 つのデータフレーム A と B があり、それらを結合したい場合には rbind または cbind 関数を使う。

C = cbind(Hair_color = c("Black","Black","Brown"), Height = c(165,159,148))

cbind は column bind なので、列として結合する。つまり 二つのデータフレームが横に繋がる

rbind は row bind で、二つのデータフレームが縦に繋がる。この場合、列の名前が一致していないと、Error in match.names(clabs, names(xi)): names do not match previous names というエラーになる。

C = data.frame(A + B) としたくなるが、これだとデータ構造を保ったまま値が合計される。上の例だと、Body_weight の 65 と、同じ位置にある Height の 165 が足される感じになる。実際には試していないので、文字列を含んでいる場合にどうなるのかわからない。いずれにせよ、データフレームの結合は rbind または cbind と覚えておく。


csv ファイルを読み込んで作成する

更新予定。


広告

データフレームから特定の列を抽出する

データフレームからの抽出 に移動しました。


データフレームから特定の列・行を除く

これは、削除するというよりも、除きたいもの以外を別オブジェクトに保存する と考えるのがよい (4)。したがって、上記のリンクから「データフレームの抽出」を参照のこと。

たとえば、全体で 8 列のデータセットで、1 列目を除きたい場合はこうなる。

A2 = A[2:8]

データフレームの検索と置換 を参照のこと。

データフレームの行名をうまく利用する

行名をカラムに移動、またはその逆

tibble::rownames_to_column を使う。mtcars を例にしてやってみよう。

mtcars2 <- mtcars %>% tibble::rownames_to_column(var = "Car")
mtcars3 <- mtcars2 %>% tibble::column_to_rownames(var = "Car")

mtcars2 では、mtcars の行名が Car というカラムに入り、かわりに通し番号の行名が割り当てられる。mtcars3 では、column_to_rownames でもとに戻している。

cars dataframe cars dataframe
広告

References

  1. Rの data frame から行や列を選択して取り出す. Link.
  2. R-Tips 39. データフレーム事始. Link.
  3. 井関龍太のページ. Rでクリップボードからデータを読み込む. Link: Last access 2018/12/09.
  4. R:データフレームの列を入れ替える・削除する。 Link: Last access 2020/06/09.

コメント欄

各ページのコメント欄を復活させました。スパム対策のため、以下の禁止ワードが含まれるコメントは表示されないように設定しています。レイアウトなどは引き続き改善していきます。「管理人への質問」「フォーラム」へのバナーも引き続きご利用下さい。

禁止ワード: http, the, м (ロシア語のフォントです)


このページにコメント

Name:


Comment:



これまでに投稿されたコメント

Date Name Comment