-3

我有两个数据框,df1并且df2.

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 中删除具有匹配 contig 的行,df2 中的位置值。

4

4 回答 4

1

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

conpos_del <- with(df2, interaction(contig,position,drop=T))
subset(df1, !interaction(contig,position,drop=T) %in% conpos_del)
于 2013-08-01T03:10:22.477 回答
1

它不漂亮,但它有效

df1[!paste(df1$contig, df1$position) %in% paste(df2$contig, df2$position),]
于 2013-08-01T03:14:26.237 回答
0
df1[ ! with(df1, interaction(contig, position) %in% 
                  with(df2, unique(interaction(contig , position))) , ] 
于 2013-08-01T04:26:55.533 回答
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)), ]
于 2013-08-01T03:12:32.970 回答