前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言之生信(10)多个探针对应一个基因的处理方法

R语言之生信(10)多个探针对应一个基因的处理方法

作者头像
用户1359560
发布2019-04-29 18:38:23
10.4K0
发布2019-04-29 18:38:23
举报
文章被收录于专栏:生信小驿站生信小驿站

======================================

在生信分析过程中,经常遇到一个问题,芯片或者测序数据经常出现多个探针对应一个基因的情况。这个时候处理方法比较多,比如说比较常见的是均值或者最大值。本篇文章的主要目的是:介绍几种常见的处理方法:(1)均值(2)中位数(3)最大值(4)最小值(5)IQR(四分位间距,表达值范围)

第一步:合并数据

(1)首先需要一个表达矩阵和一个注释探针的矩阵
(2)合并两个矩阵
代码语言:javascript
复制
#################################################################################
#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对应一个同一个基因的情况,而如果为了去掉这些重复的基因,将数据处理成每一行为不重复的基因。则需要通过一些代码来去重。

第一种:使用平均值

代码语言:javascript
复制
####################################################################
#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(为三个探针的平均值)。

代码语言:javascript
复制
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

在这里,我介绍两种方法,经过此代码同样可以达到上述的效果。

第二种:使用中位数

代码语言:javascript
复制
#################################################################################
#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(为三个探针的中位数)。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.04.19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步:合并数据
    • (1)首先需要一个表达矩阵和一个注释探针的矩阵
      • (2)合并两个矩阵
      • 第一种:使用平均值
      • 第二种:使用中位数
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档