我们已经讲解了许多read count的格式转换方法:
下面讲一下ENSG id转换:
适用与TCGA及部分GEO数据:
我们下载的TCGA数据是没有经过ID转化的,如下图:
这种格式的基因id叫Ensembl Gene ID,其中小数点后面是版本号,前十五位才是真正的基因id,要知道哪个基因对应哪个id,我们需要下载以下注释文件:
注释文件的数据如下所示,我们用excel打开以后存成csv格式:
我们将文件和表达数据放在同一个文件夹里面,然后开始运行代码:
setwd("C:\\Users\\Lijingxian\\Desktop\\写博客的书籍\\数据清洗")
dir()
data <- read.csv("TCGA-ACC.htseq_counts.tsv",header = T,sep = "\t")
data[1:5,1:5]
data$Ensembl_ID <- substr(data$Ensembl_ID,1,15)
data[1:5,1:5]
# > data[1:5,1:5]
# Ensembl_ID TCGA.OR.A5JP.01A TCGA.OR.A5JG.01A TCGA.OR.A5K1.01A TCGA.OR.A5JR.01A
#1 ENSG00000000003 10.769838 10.721099 10.253847 11.448116
#2 ENSG00000000005 2.584963 4.000000 1.000000 1.000000
#3 ENSG00000000419 11.361396 11.456868 11.002112 11.324181
#4 ENSG00000000457 9.152285 8.654636 7.781360 9.055282
#5 ENSG00000000460 7.693487 7.832890 6.918863 7.754888
注意此处我们将版本号给去掉了,用的是substr函数,取前15位,然后我们读取注释数据,也将版本号去掉:
data2 <- read.csv("gencode.v22.annotation.gene.csv",header = T,sep = ",")
data2[1:5,1:5]
data2$id <- substr(data2$id,1,15)
head(data2)
# > head(data2)
# id gene chrom chromStart chromEnd strand
#1 ENSG00000223972 DDX11L1 chr1 11869 14409 +
#2 ENSG00000227232 WASH7P chr1 14404 29570 -
#3 ENSG00000278267 MIR6859-3 chr1 17369 17436 -
#4 ENSG00000243485 RP11-34P13.3 chr1 29554 31109 +
#5 ENSG00000274890 MIR1302-9 chr1 30366 30503 +
#6 ENSG00000237613 FAM138A chr1 34554 36081 -
下面进行id转化:
data <- data[match(data2$id,data$Ensembl_ID),]
dim(data)
identical(data$Ensembl_ID,data2$id)
data$Ensembl_ID <- data2$gene
data[1:5,1:5]
# > data[1:5,1:5]
# Ensembl_ID TCGA.OR.A5JP.01A TCGA.OR.A5JG.01A TCGA.OR.A5K1.01A TCGA.OR.A5JR.01A
#25808 DDX11L1 0.000000 0.000000 0.00000 0.00000
#28098 WASH7P 6.491853 5.977280 4.70044 5.61471
#57782 MIR6859-3 1.000000 1.584963 0.00000 0.00000
#37879 RP11-34P13.3 0.000000 0.000000 0.00000 0.00000
#55620 MIR1302-9 0.000000 0.000000 0.00000 0.00000
转换完成以后,读出数据:
write.csv(data,"ACC_data.csv",row.names = F)