R удалить наложения в таблице - PullRequest
0 голосов
/ 01 марта 2019

У меня есть таблица (упрощенный вывод 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 имеетдва совпадающих удара с равным счетом, поэтому оба удара должны быть отброшены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...