2013-04-04 17 views
0

我有两个数据框与基因组数据,我需要删除数据框1中的所有行,其中“功能”列中的条目等于条目在数据帧的一排“功能”一栏2.删除数据框的行列条目与另一个数据框的列重叠

df1 <- data.frame(feature=c("ENSG419","ENSG1617","ENSG1629","ENSG16230"),distance=c(9833,2460,50538,51162),origin=c("e2","e2","e2","e2")) 
df2 <- data.frame(feature=c("ENSG4939","ENSG1617","ENSG5844","ENSG10292"),distance=c(8441,8970,10320,139),origin=c("etoh","etoh","etoh","etoh")) 

> df1 
    feature distance origin 
1 ENSG419  9833  e2 
2 ENSG1617  2460  e2 
3 ENSG1629 50538  e2 
4 ENSG16230 51162  e2 
> df2 
    feature distance origin 
1 ENSG4939  8441 etoh 
2 ENSG1617  8970 etoh 
3 ENSG5844 10320 etoh 
4 ENSG10292  139 etoh 

我希望得到这样的:

feature distance origin 
1 ENSG419  9833  e2 
2 ENSG1629 50538  e2 
3 ENSG16230 51162  e2 

我试图通过这两个数据帧绑定到删除重复项新数据帧并随后提取具有新数据fr的相同特征的行AME。现在我想删除所说的从原始数据帧1

df_new <- rbind(df1,df2) 
df_new[duplicated(df_new[,1]),] 

它也不太行的工作,我敢肯定有一个更好的解决办法,反正。我会非常感谢任何建议!

回答

3

试试这个:

df1[!df1$feature %in% df2$feature, ] 
+0

谢谢你,它的工作原理! – atreju 2013-04-04 13:49:28

2

我会从两者中提取特征,对这些集合进行差异化处理,然后根据结果对第一个数据帧进行子集合处理。

only1 <- setdiff(df1$feature, df2$feature) 
df_sel <- df1[df1$feature %in% only1] 

但我认为,阿朗的解决方案是一个oneliner :)

相关问题