目录
R语言之生信①差异基因分析1
R语言之生信②差异基因分析2
R语言之生信③差异基因分析3
R语言之生信④TCGA生存分析1
R语言之生信⑤TCGA生存分析2
R语言之生信⑥TCGA生存分析3
R语言之生信⑦Cox比例风险模型(单因素)
R语言之生信⑧Cox比例风险模型(多因素)
R语言之生信(9)R语言多个生存分析曲线比较
R语言之生信(10)多个探针对应一个基因的处理方法
======================================
在生信分析过程中,经常遇到一个问题,芯片或者测序数据经常出现多个探针对应一个基因的情况。这个时候处理方法比较多,比如说比较常见的是均值或者最大值。本篇文章的主要目的是:介绍几种常见的处理方法:(1)均值(2)中位数(3)最大值(4)最小值(5)IQR(四分位间距,表达值范围)
第一步:合并数据
(1)首先需要一个表达矩阵和一个注释探针的矩阵
(2)合并两个矩阵
#################################################################################
#Zihao Chen (2019-04-19)
#https://www.jianshu.com/u/619b87e54936
#################################################################################
#删除变量
rm(list=ls())
options(stringsAsFactors = T)
library(dplyr)
setwd('D:\\train\\data')
library(dplyr)
anno <- read.csv('anno.csv',header = T)
head(anno)
ID GENE
1 1 hsa-miR-1
2 11 hsa-miR-1
3 21 hsa-miR-1
4 10 hsa-miR-10
5 20 hsa-miR-10
6 30 hsa-miR-10
matrix <- read.csv('matrix.csv',header = T)
head(matrix)
ID GSM01 GSM02 GSM03 GSM04 GSM05 GSM06
1 1 6100.00 2080.00 1710.000 2600.00 2210.00 2690.00
2 2 -1.29 -8.49 -21.100 -5.40 -4.09 -6.81
3 3 10.00 -1.74 27.000 20.70 5.10 8.50
4 4 -10.10 -10.90 -8.260 -10.90 -2.68 -4.77
5 5 -9.72 -8.88 4.240 -11.00 -4.68 -4.79
6 6 11.70 -6.74 -0.516 -7.49 5.09 6.80
exprSet <- merge(anno,matrix,by='ID')
exprSet <- exprSet %>%
dplyr::arrange(GENE)
head(exprSet)
ID GENE GSM01 GSM02 GSM03 GSM04 GSM05 GSM06
1 1 hsa-miR-1 6100.0000 2080.00 1710.000 2600.000 2210.00 2690.00
2 11 hsa-miR-1 -10.5000 -13.40 7.400 -7.060 -2.52 -2.44
3 21 hsa-miR-1 -7.6300 -10.60 -4.320 -5.970 2.31 2.82
4 10 hsa-miR-10 -7.1600 -11.60 -0.638 0.656 -2.44 1.54
5 20 hsa-miR-10 0.0149 -7.78 12.100 -4.860 -2.86 1.62
6 30 hsa-miR-10 715.0000 428.00 766.000 368.000 379.00 155.00
通过上述的数据,我们发现会有多个探针ID对应一个同一个基因的情况,而如果为了去掉这些重复的基因,将数据处理成每一行为不重复的基因。则需要通过一些代码来去重。
第一种:使用平均值
####################################################################
#Method1 use mean
####################################################################
exprSet_symbol1 <- aggregate(x = exprSet[,3:ncol(exprSet)],
by = list(exprSet$GENE),
FUN = mean)
head(exprSet_symbol1)
Group.1 GSM01 GSM02 GSM03 GSM04 GSM05 GSM06
1 hsa-miR-1 2027.290000 685.3333333 571.026667 862.323333 736.59666667 896.7933333
2 hsa-miR-10 235.951633 136.2066667 259.154000 121.265333 124.56666667 52.7200000
3 hsa-miR-2 4.489667 -5.6500000 8.766667 -4.573333 -0.09066667 0.0400000
4 hsa-miR-3 4.433333 -3.1066667 4.813333 2.193333 0.14366667 4.8333333
5 hsa-miR-4 7.716667 0.3433333 3.043333 8.076667 28.43333333 3.5210000
6 hsa-miR-5 -3.552000 -8.1966667 2.016667 -8.563333 -2.39233333 0.9468153
我们发现本来hsa-miR-1 基因在GSM01 样本中,有三个探针,表达量分别为6100,-10.5,-7.63。在通过平均值合并后hsa-miR-1在GSM02 样本表达量为 2027.29(为三个探针的平均值)。
exprSet_symbol2 <- as.data.frame(t(sapply(split(exprSet,exprSet$GENE),
function(x) colMeans(x[,3:ncol(x)]))))
head(exprSet_symbol2)
GSM01 GSM02 GSM03 GSM04 GSM05 GSM06
hsa-miR-1 2027.290000 685.3333333 571.026667 862.323333 736.59666667 896.7933333
hsa-miR-10 235.951633 136.2066667 259.154000 121.265333 124.56666667 52.7200000
hsa-miR-2 4.489667 -5.6500000 8.766667 -4.573333 -0.09066667 0.0400000
hsa-miR-3 4.433333 -3.1066667 4.813333 2.193333 0.14366667 4.8333333
hsa-miR-4 7.716667 0.3433333 3.043333 8.076667 28.43333333 3.5210000
hsa-miR-5 -3.552000 -8.1966667 2.016667 -8.563333 -2.39233333 0.9468153
在这里,我介绍两种方法,经过此代码同样可以达到上述的效果。
第二种:使用中位数
#################################################################################
#Method2 use median
#################################################################################
exprSet_symbol1 <- aggregate(x = exprSet[,3:ncol(exprSet)],
by = list(exprSet$GENE),
FUN = median)
head(exprSet_symbol1)
Group.1 GSM01 GSM02 GSM03 GSM04 GSM05 GSM06
1 hsa-miR-1 -7.6300 -10.60 7.40 -5.970 2.310 2.820000
2 hsa-miR-10 0.0149 -7.78 12.10 0.656 -2.440 1.620000
3 hsa-miR-2 0.5590 -6.28 1.50 -5.400 -0.922 2.550000
4 hsa-miR-3 10.0000 -1.74 6.74 2.780 0.581 8.500000
5 hsa-miR-4 -2.2500 -5.07 6.39 -2.670 -2.120 0.233000
6 hsa-miR-5 -1.3200 -8.88 4.24 -9.810 -3.080 0.000446
exprSet_symbol2 <- as.data.frame(t(sapply(split(exprSet,exprSet$GENE),
function(x) apply(x[,3:ncol(x)],2,median))))
head(exprSet_symbol2)
GSM01 GSM02 GSM03 GSM04 GSM05 GSM06
hsa-miR-1 -7.6300 -10.60 7.40 -5.970 2.310 2.820000
hsa-miR-10 0.0149 -7.78 12.10 0.656 -2.440 1.620000
hsa-miR-2 0.5590 -6.28 1.50 -5.400 -0.922 2.550000
hsa-miR-3 10.0000 -1.74 6.74 2.780 0.581 8.500000
hsa-miR-4 -2.2500 -5.07 6.39 -2.670 -2.120 0.233000
hsa-miR-5 -1.3200 -8.88 4.24 -9.810 -3.080 0.000446
我们发现本来hsa-miR-1 基因在GSM01 样本中,有三个探针,表达量分别为6100,-10.5,-7.63。在通过平均值合并后hsa-miR-1在GSM02 样本表达量为 -7.63(为三个探针的中位数)。