2013-10-24 2 views
0

Я новичок в программировании и только что начал изучать R, и, следовательно, просьба угодить моему невежеству. Я сейчас в работе с данными, которые выглядят так:Поиск общих значений между парами данных

У меня есть данные в следующем формате.

Для например:

заболеванияGene Symbol
ангионевротическогоFOXJ1
болезни BMYB
болезни BGATA4
Disease CMYB
Болезнь DGATA4

Есть некоторые 250 таких записей. Я хотел бы видеть данные в следующем формате:

Disease 1Common Shared Gene Символыболезнь 2

ангионевротическийMYB, FOXJ1Disease B

Болезнь CMYBболезнь Б

болезнь БGATA4болезнь Д

То, как я приближался: я разделить процесс на 3 этапа:

Шаг 1: Сделать попарные комбинации Болезни.

Шаг 2: Найдите генные символы, связанные с каждой болезнью, и назначьте их вектору.

Шаг 3: Теперь используйте функцию пересечения (% n%) на этих созданных векторах, чтобы найти общие символы генов.

Я уверен, что должно быть что-то намного проще, чем это.

Любая помощь будет оценена! Большое спасибо!

С уважением, S

+2

Добро пожаловать к переполнению стека. Попробуйте сделать воспроизводимый пример вашей ситуации. Вы можете прочитать http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – Chargaff

ответ

3

раствор, используя combinat пакет, является:

library(combinat) 

#random data 
DF <- data.frame(Disease = LETTERS[1:10], Gene = sample(letters[1:4], 10, T)) 

#> DF 
# Disease Gene 
#1  A a 
#2  B a 
#3  C c 
#4  D b 
#5  E d 
#6  F b 
#7  G c 
#8  H d 
#9  I b 
#10  J d 

#all possible combinations of diseases 
dis_combns <- combn(DF$Disease, 2) #see `?combn` 

#find common genes between each pair of diseases 
commons <- apply(dis_combns, 2, 
     function(x) union(DF$Gene[DF$Disease == x[1]], DF$Gene[DF$Disease == x[2]])) 
#format the list of common genes for easier manipulation later 
commons <- unlist(lapply(commons, paste, collapse = " and ")) 

#result 
resultDF <- data.frame(Disease1 = dis_combns[1,], 
        Common_genes = commons, Disease2 = dis_combns[2,]) 

#> resultDF 
# Disease1 Common_genes Disease2 
#1   A   a  B 
#2   A  a and c  C 
#3   A  a and b  D 
#4   A  a and d  E 
#5   A  a and b  F 
#6   A  a and c  G 
#7   A  a and d  H 
#8   A  a and b  I 
#9   A  a and d  J 
#10  B  a and c  C 
#11  B  a and b  D 
#12  B  a and d  E 
#13  B  a and b  F 
#14  B  a and c  G 
#.... 
+0

Большое вам спасибо! Это очень помогло! – DataStudent

Смежные вопросы