0.需求
TCGA里的數(shù)據(jù)tumor多normal少,想要挑選出配對(duì)樣本進(jìn)行差異分析。(并不是說(shuō)必須挑配對(duì)樣本才能做哦,直接做也是可以的)
1.數(shù)據(jù)
這里使用的數(shù)據(jù)是TCGA的CHOL表達(dá)矩陣。
rm(list = ls())
load("exp.Rdata")
dim(exp)
## [1] 30348 45
exp[1:4,1:4]
## TCGA-W5-AA36-01A-11R-A41I-07
## ENSG00000000003.13 2504
## ENSG00000000419.11 1272
## ENSG00000000457.12 504
## ENSG00000000460.15 123
## TCGA-W5-AA2H-01A-31R-A41I-07
## ENSG00000000003.13 226
## ENSG00000000419.11 1146
## ENSG00000000457.12 602
## ENSG00000000460.15 162
## TCGA-ZU-A8S4-11A-11R-A41I-07
## ENSG00000000003.13 4107
## ENSG00000000419.11 741
## ENSG00000000457.12 312
## ENSG00000000460.15 170
## TCGA-WD-A7RX-01A-12R-A41I-07
## ENSG00000000003.13 9646
## ENSG00000000419.11 1266
## ENSG00000000457.12 1317
## ENSG00000000460.15 451
head(colnames(exp))
## [1] "TCGA-W5-AA36-01A-11R-A41I-07"
## [2] "TCGA-W5-AA2H-01A-31R-A41I-07"
## [3] "TCGA-ZU-A8S4-11A-11R-A41I-07"
## [4] "TCGA-WD-A7RX-01A-12R-A41I-07"
## [5] "TCGA-3X-AAVC-01A-21R-A41I-07"
## [6] "TCGA-3X-AAVE-01A-11R-A41I-07"
從TCGA ID里可以找到tumor和normal的分組,統(tǒng)計(jì)它們的數(shù)量:
table(stringr::str_sub(colnames(exp),14,15)<10)
##
## FALSE TRUE
## 9 36
2.代碼實(shí)現(xiàn)
配對(duì)樣本的共同點(diǎn)是病人ID(前12位)一致,根據(jù)這個(gè)來(lái)匹配即可。
先拆分成tumor和normal兩個(gè)矩陣,根據(jù)ID的14和15位來(lái)拆
library(stringr)
exp_nor = exp[,str_sub(colnames(exp),14,15) > 10]
exp_tum = exp[,str_sub(colnames(exp),14,15)<=10]
有normal樣本的病人的ID,是normal組樣本ID的前12位,也是exp_nor的行名。
patient = str_sub(colnames(exp_nor),1,12)
然后將tumor矩陣中與patient相匹配的樣本名選出來(lái),能匹配到的就會(huì)被挑出來(lái)。%in%從來(lái)都是R語(yǔ)言里的一個(gè)神技能:%in%很簡(jiǎn)單
k = str_sub(colnames(exp_tum),1,12) %in% patient;table(k)
## k
## FALSE TRUE
## 27 9
exp_tum = exp_tum[,k]
可以把表達(dá)矩陣拼回去咯:
exp2 = cbind(exp_tum,exp_nor)
dim(exp2)
## [1] 30348 18
就相當(dāng)于把表達(dá)矩陣按列取子集了,tumor和normal各九個(gè)樣本,后面可以拿來(lái)做配對(duì)樣本的差異分析哦,例如下面這張圖,就是COAD數(shù)據(jù)配對(duì)差異分析得到的差異基因熱圖。

轉(zhuǎn)錄組的差異分析在這里:TCGA(轉(zhuǎn)錄組)差異分析三大R包及其結(jié)果對(duì)比