前面给大家介绍了,如果同一个基因有多行表达值,该如何处理。
前面给大家介绍了如何通过R的aggregate函数来实现对相同的基因名按列取平均。今天小编给大家介绍另外一种方法,使用limma包中的avereps函数来处理。大家对limma这个包应该都不陌生。它是目前主流的三种差异表达分析包(limma,edgeR和DEseq2)中的一个,也是应用比较广泛的一个。前面小编也给大家介绍了
☞R代码TCGA差异表达分析
今天我们来聊聊如何使用limma包中的avereps,对相同基因的表达值取平均。
#加载limma包
library(limma)
#生成一个表达矩阵
df=matrix(1:20,nrow=4)
#设置行名,基因名字
rownames(df)=paste0("gene",c(1,1,2,3))
#设置列名,样本名字
colnames(df)=paste0("sample",1:5)
#对相同的基因的表达取平均
result=avereps(df)
result
原始矩阵如下
通过avereps取完平均之后的矩阵如下
我们也可以使用☞ 表达谱数据中相同基因如何处理中讲到的aggregate函数来处理这个矩阵得到相同的结果。
#使用aggregate函数
#将基因名字添加到数据框中
df1=data.frame(gene=rownames(df),df)
#使用aggregate函数取平均
result1=aggregate(.~gene,df1,mean)
#设置行名,并删掉gene名字这一列
rownames(result1)=result1$gene
result2=result1[,-1]
result2
可以看到,跟avereps方法得到的结果是一样的,殊途同归。
网友评论