选择变量值等于某个向量的行

时间:2014-01-18 04:39:52

标签: r row subset

我有超过1000人的名为df的纵向数据,如下所示:

id  year    name    status  
1   1984    James   4   
1   1985    James   1   
2   1983    John    2   
2   1984    John    1   
3   1980    Amy     2   
3   1981    Amy     2   
4   1930    Jane    4   
4   1931    Jane    5   

我正在尝试按某些id对数据进行子集化。例如,我有一个由dd组成的向量id,我想将其分组:

dd<-c(1,3)

我尝试了以下但是没有用,例如:

subset<-subset(df, subset(df$id==dd))

subset<-subset(df, subset(unique(df$id))==dd))

subset<-df[which(unique(df$id)==dd),]

或者我尝试过for循环

for (i in 1:2){
  subset<-subset(df, subset=(unique(df$id)==dd[i]))
}

是否有办法只选择id s与向量dd中的数字相匹配的行?

2 个答案:

答案 0 :(得分:5)

使用%in%和逻辑索引:

df[df$id %in% dd,]
  id year  name status
1  1 1984 James      4
2  1 1985 James      1
5  3 1980   Amy      2
6  3 1981   Amy      2

答案 1 :(得分:1)

作为替代方案,您可以使用'dplyr'一个新的包(作者:Hadley Wickham),它提供了一套非常快速的工具来有效地操作数据集。

require(dplyr)

filter(df,id %in% dd )
  id year  name status

1  1 1984 James      4
2  1 1985 James      1
3  3 1980   Amy      2
4  3 1981   Amy      2