2014-02-26 100 views
1

如果已经询问了此问题,我真诚道歉,但是我搜索了高和低,并且找不到任何类似的问题。删除不满足数据框特定列中的条件的数据框(R)

我在R,这是相当复杂的一个数据帧上工作,所以我将简短它归结为以下数据帧:

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

我有一个创建一个列表,喜欢“清单的功能.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]])} } 

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

谢谢

回答

1

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

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

非常感谢! – Erosennin

+0

不客气;) – Pop

1

只是做

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

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

非常感谢! – Erosennin

相关问题