R subset関数 データフレームやmatrixからの条件指定による行・列の抽出

R の subset関数は、データフレームやマトリックスから部分集合を取り出す関数です。条件を指定する主なパラメータは、「subset」と「select」です。「subset」では行を抽出するための条件式を、「select」では抽出する列を指定します。

R subset関数 データフレームからの抽出

スポンサーリンク



R の subset関数に、対象となるデータ (データフレーム) 、「subset」もしくは「select」で条件を指定することで、条件を満たすデータだけを取り出すことができます。

R> df <- data.frame(name=I(c("kumazou1", "kumazou2", "kumazou3")), + age=c(101, 102, 103), + color=c("red", "green", "yellow")) R> df
      name age  color
1 kumazou1 101    red
2 kumazou2 102  green
3 kumazou3 103 yellow

# subset(条件式)を指定
R> subset(df, age<103)
      name age color
1 kumazou1 101   red
2 kumazou2 102 green

# select(列の条件)を指定
R> subset(df, select=c(name, color))
      name  color
1 kumazou1    red
2 kumazou2  green
3 kumazou3 yellow

# subsetとselectを組み合わせ
R> df.sub <- subset(df, subset=age<103, select=-2) R> df.sub
      name color
1 kumazou1   red
2 kumazou2 green

R subset関数 データフレーム以外からの抽出

R の subset関数は、ベクターやmatrixでも条件を指定した抽出を行うことができます。ベクターの場合は、インデックス形式で直接指定しても簡潔で分り易いです。しかし、matrixの場合は、慣れないと分かり難い場合もあるので、subset関数による抽出の指定を知っておくと便利なことがあるかもしれません。

R> df.v <- letters R> df.v
 [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" ...
[20] "t" "u" "v" "w" "x" "y" "z"
> subset(df.v, df.v>"w")
[1] "x" "y" "z"

# 直接指定する場合
> df.v[df.v>"w"]
[1] "x" "y" "z"
> mt <- matrix(sample(12), 3, 4) > mt
     [,1] [,2] [,3] [,4]
[1,]    5    4    2    8
[2,]    1   12   10    7
[3,]    3    9    6   11

> subset(mt, mt[,3]>=5, select=c(1,2,3))
     [,1] [,2] [,3]
[1,]    1   12   10
[2,]    3    9    6

# 直接指定する場合
> mt[mt[,3]>=5, -4]
     [,1] [,2] [,3]
[1,]    1   12   10
[2,]    3    9    6
スポンサーリンク



関連記事
R 使い方 組込みデータセット iris データフレーム・ベクトル・リスト
R 使い方 for 繰り返し スクリプトの書き方
R 使い方 データ構造まとめ スクリプトの書き方
R 使い方 データ 読込み テキスト,csv,エクセル,データベース スクリプトの書き方