在R中删除具有多个键的行

时间:2013-08-01 02:43:40

标签: r dataframe

我有两个数据框,df1df2

df1:

contig  position   tumor_f  t_ref_count  t_alt_count
1     14599  0.000000            1            0
1     14653  0.400000            3            2
1     14907  0.333333            6            3
1     14930  0.363636            7            4 

DF2:

contig  position
1     14599
1     14653

我想从df1中删除带有匹配重叠群的行,df2中的位置值。

4 个答案:

答案 0 :(得分:1)

这是一种方法。我相信还有其他解决方案,

conpos_del <- with(df2, interaction(contig,position,drop=T))
subset(df1, !interaction(contig,position,drop=T) %in% conpos_del)

答案 1 :(得分:1)

它不漂亮,但它有效

df1[!paste(df1$contig, df1$position) %in% paste(df2$contig, df2$position),]

答案 2 :(得分:0)

您可以将match()函数与否定子集一起使用:

df1 <- data.frame(contig = c(1,1,1,1), position = c(14599, 14653,
    14907, 14930), other = c(1,2,6,7))

df2 <- data.frame(contig = c(1,1), position = c(14599, 14653))

df1[-na.omit(match(df1$position, df2$position)), ]

答案 3 :(得分:0)

df1[ ! with(df1, interaction(contig, position) %in% 
                  with(df2, unique(interaction(contig , position))) , ]