R子集具有多个密钥的数据帧

时间:2013-01-22 18:59:59

标签: r subset

我有以下数据框

id val
a  1
a  2
a  3
b  4
b  5
c  6

我想使用id的子集找到该数据帧的子集。我知道如果子集标准仅为1的值,我可以执行以下操作。

y = subset(x,id=='a')

但是,如果我有一组几个id,我如何得到一个子集。例如c('a','b')。做

y = subset(x,id==c('a','b'))

没有给我我想要的东西。

2 个答案:

答案 0 :(得分:5)

您可以使用逻辑运算符进行子集化,例如

y=subset(x,id=='a' | id=='b')

或者您可以使用%in%运算符:

y=subset(x,id %in% c('a','b'))

答案 1 :(得分:3)

尝试使用%in%运算符。

> id<-c("a","a","a","b","b","c")
> val<-c(1,2,3,4,5,6)
> x<-data.frame(cbind(id,val))
> subset(x,id %in%c('a','b'))
  id val
1  a   1
2  a   2
3  a   3
4  b   4
5  b   5