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でも条件を指定した抽出を行うことができます。
ベクターからの抽出
ベクターの場合は、インデックス形式で直接指定しても簡潔で分り易いです。
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関数で指定する場合 > 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関数で行と列の条件を指定する場合 > 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,エクセル,データベース スクリプトの書き方
実験データの解析や論文用グラフ作成のヒントになりそうな、プログラミング・統計処理の参考になる書籍をまとめて紹介しています。是非、参考にしてみて下さいね。