[R]{base} subset() : ベクトル、マトリックス、データフレームから一部を選択抽出する(ジェネリック関数)

説明

ベクトル、マトリックス(行列)、データフレームから指定した条件を満たす一部(サブセット)を返すジェネリック関数である。大きく一次元のデータであるベクトルに対するsubset()と二次元のデータである行列、データフレームに対するsubset()に分けて考えると理解しやすい。後者はSQLで言えばSELECT文に相当する機能である。

使用法

ベクトルに対して

サブセット <- subset(ベクトル, subset = 選択条件)

マトリックス、データフレームに対して

サブセット <- subset(データフレーム, subset = 選択条件, select=c(抽出する列名1,列名2,...))

# 引数"select"はマトリックス、データフレームに対するsubset()でのみ使用可能である。

返り値

サブセット抽出対象となった元のデータオブジェクトに相当する型のオブジェクト。例えばベクトルならベクトル、データフレームならデータフレームということ。

なおサブセットを抽出した結果、Factor型列には実際にはデータの存在しない水準(empty level)が残ってしまうことがある。この場合、subset()は自動的にempty levelを削除する。

使用例

通常のデータフレームに対する例。

> data(iris)
> subset(iris,subset=Species=="setosa",select=c("Sepal.Width","Petal.Length"))

subset引数には論理値のベクトルを返す条件式を与えなければならない。

select引数には、列名を文字列とするベクトルを与えなければならない。

即ちいずれにおいても列名が使用されているが、subsetに渡す際の列名は引用符なし、selectに渡す際の列名は引用符あり、であることに注意が必要である。

{prob}パッケージとの併用例。


> library(prob)
> subset(cards(),rank %in% 7:9)
   rank    suit
6     7    Club
7     8    Club
8     9    Club
19    7 Diamond
20    8 Diamond
21    9 Diamond
32    7   Heart
33    8   Heart
34    9   Heart
45    7   Spade
46    8   Spade
47    9   Spade
> subset(rolldie(3),X1+X2+X3>16)
    X1 X2 X3
180  6  6  5
210  6  5  6
215  5  6  6
216  6  6  6

関連

行列、データフレームに対しては[]を使用して同等の操作が可能である。

コメント