我有两个带基因组数据的数据框,我需要删除数据框1中的所有行,其中“feature”列中的条目等于数据帧2的行中“feature”列中的条目。 / p>
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
我尝试通过将两个数据帧绑定到新数据帧并随后提取具有相同新数据帧功能的行来删除重复条目。现在我想从原始数据框1中删除所述行。
df_new <- rbind(df1,df2)
df_new[duplicated(df_new[,1]),]
它没有完全奏效,无论如何我确信有更好的解决方案。我会非常感谢任何建议!
答案 0 :(得分:3)
试试这个:
df1[!df1$feature %in% df2$feature, ]
答案 1 :(得分:2)
我会从两者中提取特征,对集合进行差异,然后根据结果对第一个数据帧进行子集化。
only1 <- setdiff(df1$feature, df2$feature)
df_sel <- df1[df1$feature %in% only1]
但我同意Arun的解决方案是一个oneliner:)