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(为三个探针的中位数)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券