删除不满足数据帧特定列中条件的数据帧行(在R中)

时间:2014-02-26 12:05:39

标签: r dataframe extract rows

如果已经提出这个问题,我真诚地道歉,但我搜索得很高,找不到任何类似的问题。

我正在处理R中的数据帧,这是相当复杂的,所以我将其缩短为以下数据框:

data<-data.frame(x=c("ENG","ITA","RUS","SLO"),y=c(4,3,6,4))
list.country<-list("ENG","RUS")

我有一个创建列表的函数,比如上面的“list.country”,以及此列表中包含的任何条目,我想从data.frame中提取匹配的行到新的数据框中。因此,使用上面的数据和列表,我希望最终得到一个如下所示的新数据框:

new.data<-data.frame(x=c("ENG","RUS",),y=c(4,6))

我发现这样做的唯一方法是分别提取每一行,然后再将它们绑定在一起,方法如下:

vector.list<-unlist(list.country)
n=length(vector.list)
for(i in 1:n){
  data[[i]]<-data[data$x==vector.list[i],]

}
for(i in 2:n){data[[i]]<- rbind(data[[i-1]],data[[i]])} }

有没有人有更简单的方法来做到这一点?

谢谢

2 个答案:

答案 0 :(得分:1)

只做

data[data$x %in% list.country, ]

##     x y
## 1 ENG 4
## 3 RUS 6

答案 1 :(得分:1)

%in%函数搜索匹配第二个元素中的元素的第一个向量中的所有元素。在你的情况下,你应该这样做

data[data$x %in% list.country, ]