У меня есть набор данных генов, которые я сопоставляю с типом идентификатора белка. Затем я пытаюсь найти эти идентификаторы белков в другом втором наборе данных. Второй набор данных довольно большой - 11759454 строки. Я пытаюсь найти соответствующие идентификаторы белков с помощью слияния или объединения, например:
testdf <- join(proteindf, genes) #or:
testdf <- merge(proteindf, genes, by.all='protein_id' , all.x=TRUE)
Они выполняются, но порядок строк неуместен, а testdf
увеличивается в размере до номера строки 11775850.
Я не уверен, как решить эту проблему, у меня есть опыт работы в области биологии, и я пробовал запускать sql версию слияния, но это работает бесконечно без завершения.
Я не могу предоставить полные данные, но обычно наборы данных выглядят так:
#gene dataset:
protein_id Gene
1 9606.ENSP00000378868 A1CF
2 9606.ENSP00000384794 A4GALT
3 9606.ENSP00000324842 AACS
4 9606.ENSP00000000233 ARF5
#proteindf:
protein_id protein_id1 coexpression experiments database
1 9606.ENSP00000000233 9606.ENSP00000272298 0 0 0
2 9606.ENSP00000000233 9606.ENSP00000253401 0 0 0
3 9606.ENSP00000000233 9606.ENSP00000401445 0 0 0
4 9606.ENSP00000000233 9606.ENSP00000418915 0 0 0
В строках protein_id может быть много дубликатов, что, как я полагаю, усугубляет проблему.
Ожидаемый результат:
protein_id Gene protein_id1 coexpression experiments database
1 9606.ENSP00000000233 ARF5 9606.ENSP00000272298 0 0 0
2 9606.ENSP00000000233 ARF5 9606.ENSP00000253401 0 0 0
3 9606.ENSP00000000233 ARF5 9606.ENSP00000401445 0 0 0
4 9606.ENSP00000000233 ARF5 9606.ENSP00000418915 0 0 0
Затем я создал другой набор данных, используя слияние (переименование гена протеин_ид в протеин_ид1), чтобы получить имена генов для столбца "протеин_ид1", это также дает мне те же 11775850 строк. Приветствуется любая помощь в понимании этого.