R删除表格中的重叠

时间:2019-03-01 20:56:54

标签: r sorting filter

我有一个表(简化的hmmer输出),需要对其进行排序和过滤:

query   hit start   end score
A   hit1    56  102 0.00085
B   hit2    89  275 0.00034
B   hit3    240 349 0.00034
C   hit4    332 480 3.40E-15
D   hit5    291 512 3.80E-24
D   hit6    287 313 0.00098
D   hit7    381 426 0.00098
D   hit8    287 316 0.0029
D   hit9    373 422 0.0029

对于每个查询,该表均应按start排序,如果匹配项重叠,则将匹配项的score放在较低的位置。

到目前为止,这是我的代码,该代码首先按开始排序,然后按得分排序。

data <- read.table("table")
list = c()
list <- unique(as.vector(unlist(data$query)))
for (i in list) {
  extracted = c()
  extracted = subset(data, data$query == i)
  extracted = extracted[order(extracted$start, extracted$score), ]
}

但是我该如何检查重叠并删除得分较高的那个?

这是我的预期输出:

query   hit start   end score
A   hit1    56  102 0.00085
C   hit4    332 480 3.40E-15
D   hit5    291 512 3.80E-24

请注意,该查询B具有两个重叠的匹配且得分相等的匹配,因此应将两个匹配都排除在外。

0 个答案:

没有答案