説明
ベクトル、マトリックス(行列)、データフレームから指定した条件を満たす一部(サブセット)を返すジェネリック関数である。大きく一次元のデータであるベクトルに対する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
関連
行列、データフレームに対しては[]を使用して同等の操作が可能である。
コメント