SSブログ

Rで複数の条件抽出をする方法 [データサイエンス、統計モデル]

統計の講師をしていて、なるほど!と思う質問を受けることがあります。
せっかくなので、その中からピックアップして紹介できればと思います。

【質問】
Rで複数の条件抽出をする方法について教えてください。

【回答】
irisのデータを使って説明したいと思います。
irisには、
- Sepal.Length
- Sepal.Width
- Petal.Length
- Petal.Width
- Species
5種類の変数があります。

抽出方法1
Sepal.Lengthが5.5以上、かつ、Speciesがsetosaを抽出したい場合どうすれば良いか?

iris[iris$Sepal.Length>=5.5 & iris$Species=="setosa", ]


抽出方法2
論理積と論理和の組み合わせで抽出することも可能です。
(Sepal.Lengthが5.5以上、または、Sepal.Lengthが4.5未満)、かつ、Speciesがsetosaを抽出したい場合どうすれば良いか?

iris[(iris$Sepal.Length>=5.5 | iris$Sepal.Length<4.5) & iris$Species=="setosa", ]


抽出方法3
なんどもirisがコードに出てきて読みにくいですよね。
with(data, やりたい操作)
でdataを省略することができます。

with(iris, iris[(Sepal.Length>=5.5 | Sepal.Length<4.5) & Species=="setosa", ])


抽出方法4
上記の抽出方法3と同じなのですが、抽出条件が増えてくると、コードが読みにくいです。
そこで、下記のように書くとすっきりして見やすいかと思います。

with(iris,
     iris[(Sepal.Length>=5.5 | Sepal.Length<4.5)  # 条件1
	 & Sepal.Width>3.0                                  # 条件2
	 & Petal.Length==1.3                               # 条件3
	 & Species=="setosa"                              # 条件4
	 , ])


nice!(3)  コメント(0)