R データフレームからの抽出: 列指定、行指定、ベクトル

UB3/informatics/r/dataframe_extraction

このページの最終更新日: 2020/07/09

  1. データフレームから特定の列を抽出する
    • データラベルで指定する
    • 列番号で指定する
  2. データフレームから特定の行を抽出する
    • 行番号で指定する
    • filter 関数を使用する

広告

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

データラベルで指定する

基本的には、データラベルを使った取り出しを推奨する。この場合はドル記号を使う。以下のようなデータフレーム A を考える。

Blood_type Body_weight
1 A 65
2 A 59
3 B 45

一列目の Blood_type および Body_weight が列ラベルであるので、以下のように Blood_type を指定することで、1 列目のみを取り出し、オブジェクト B として保存することができる。

B = A$Blood_type


列番号で指定する

データフレーム A から 2 列目だけを抜き出すときは、[ ] と列番号を使って

A[2]

とする。しかし、リストから列番号を使って取り出すと、リストとして取り出されてしまう。数値のみのデータ列を取り出した場合でもそうなる。そのまま関数に入れることができないので、これはかなり不便。実例を見てみよう。

A[2]
Body_weight
1 65
2 59
3 45

このようなときは、列番号の前にコンマを入れる。

A[,2]
[1] 65 59 45

あるいは [ ] を二重にしても OK。この二重かぎカッコ [[ ]] は、$ とは微妙に動作が異なる。[[ ]] では式が展開されるが、$では展開されないようである。

A[[2]]
[1] 65 59 45

連続しない複数列を抽出したい場合は、select 関数が便利である。ライブラリー dplyr を使う必要がある。インストールされていないならまず install.packages でインストールし、読み込んでから使う必要がある。.data でデータフレームを指定し、その後に列番号を書く。

install.packages('dplyr') # 初回のみ
library(dplyr)
A = select(.data = dataframe, 1,3)

次の列番号、行番号を使った取り出し方との違いは、

is.vector(B) とすると、B がベクトルなら TRUE、そうでないなら FALSE という結果が返ってくる。


広告

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

行番号で指定する

Blood_type Body_weight
1 A 65
2 A 59
3 B 45

このようなデータフレーム A から 2 行目だけを抜き出すときは、

A[2,]

  Blood_type Body_weight
2       A       59

2 行目から 3 行目までを抜き出すときは

A[2:3,]

  Blood_type Body_weight
2       A       59
3       B       45


filter 関数を使用する

R では、行ラベルは $ のような簡単な指定方法がないので、列ラベルに比べて扱いが難しい。多くの 組み込みデータセット がそうであるように、基本的には取り出したい項目を列に収めるのがよい。

filter 関数は、指定した条件に従って特定の行を取り出す関数である。まず .data でデータセットを指定する。その次には論理式がくるが、%in% は「等しい」という演算子なので、Blood_type %in% c("A") で血液型が A である列のみを取り出せることになる。ことになる。

filter(.data = A, Blood_type %in% c("A"))

Blood_type Body_weight
1       A       65
2       A       59


広告

References

  1. Rの data frame から行や列を選択して取り出す. Link.

コメント欄

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

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


このページにコメント

Name:


Comment:



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

Date Name Comment