2

我有一个数据框,我想制作满足多个条件的子集(或仅选择那些行),例如...

a <-data.frame(a=c("a","a","b","c","b","d"),b=c(1,2,3,4,2,3))
> a
  a b
1 a 1
2 a 2
3 b 3
4 c 4
5 b 2
6 d 3

我想制作a == a|b 列和b = 2|3 列的子集。预期产出

  a b
1 a 2
2 b 3
3 b 2  

我可以为一种情况做

a[which(a[,"a"]=="a"),]

但是是否可以在一行中包含所有多个条件?

4

3 回答 3

8

a[(a$a %in% c('a', 'b')) & (a$b %in% c(2, 3)), ]

于 2012-09-28T17:54:17.297 回答
3

您可以尝试使用dplyr.

a <-data.frame(a=c("a","a","b","c","b","d"),b=c(1,2,3,4,2,3))

library(dplyr)
filter(a, (a == "a" | a == "b") & (b == 2 | b == 3))

输出:

  a b
1 a 2
2 b 3
3 b 2
于 2015-08-13T12:29:07.580 回答
1

子集(a, (a %in% c('a', 'b')) & (b %in% 2:3))

于 2012-09-28T17:58:38.930 回答