1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
data=data.frame(statut=c("A", "B", "C", "D", "A", "B", "C", "D"), nbr_in_list=c(5,15,7,8,4,3,5,8), nbr_not_in_list=c(9,7,5,4,8,6,4,5), in_list=c("geneA","geneA","geneA","geneA", "geneB", "geneB", "geneB", "geneB"))
data1=data %>% filter(in_list=="geneA")
idx = t(combn(seq_along(data1$statut),2))
res_A = lapply(1:nrow(idx),function(i){
test = fisher.test(data1[idx[i,],c("nbr_in_list","nbr_not_in_list")])
data.frame(
group1 = data1$statut[idx[i,1]],
group2 = data1$statut[idx[i,2]],
odds_ratio = as.numeric(test$estimate),
p = as.numeric(test$p.value)
)
})
res_A = do.call(rbind,res_A)
res_A
data2=data %>% filter(in_list=="geneB")
idx = t(combn(seq_along(data1$statut),2))
res_B = lapply(1:nrow(idx),function(i){
test = fisher.test(data1[idx[i,],c("nbr_in_list","nbr_not_in_list")])
data.frame(
group1 = data1$statut[idx[i,1]],
group2 = data1$statut[idx[i,2]],
odds_ratio = as.numeric(test$estimate),
p = as.numeric(test$p.value)
)
})
res_B = do.call(rbind,res_B)
res_A = cbind(res_A, in_list=c("geneA", "geneA", "geneA", "geneA", "geneA", "geneA"))
res_B = cbind(res_B, in_list=c("geneB", "geneB", "geneB", "geneB", "geneB", "geneB"))
res=rbind(res_A, res_B)
group1 group2 odds_ratio p in_list
1 A B 0.2700299 0.08744158 geneA
2 A C 0.4117416 0.43123974 geneA
3 A D 0.2927966 0.23774398 geneA
4 B C 1.5110621 0.71134315 geneA
5 B D 1.0692477 1.00000000 geneA
6 C D 0.7105367 1.00000000 geneA
7 A B 0.2700299 0.08744158 geneB
8 A C 0.4117416 0.43123974 geneB
9 A D 0.2927966 0.23774398 geneB
10 B C 1.5110621 0.71134315 geneB
11 B D 1.0692477 1.00000000 geneB
12 C D 0.7105367 1.00000000 geneB |