我需要把多个数据集的数据合到一起怎么办?直接inner_join()或者cbind()就可以拿来用吗?
当然不行!
进行进一步分析之前,你还得去除一下批次效应!
不同数据集在不同批次测序的结果可能会有很大差异。
去除批次效应的方法主要包括以下三种:
1,Deseq2包自带去除批次效益的函数,只需要在计算差异基因时加上即可。(注意:分组信息和批次效应信息不能完全一样,否则不能做批次效应消除。)
condition <- c(rep("Normal",3),rep("Tumor",3))
batch <- c(1,1,2,2,3,3)
sampleTable <- data.frame(condition=condition,batch=batch)
#样本表达数据框列名需要与sampleTable一致。
row.names(sampleTable) <- colnames(expr)
dds <- DESeqDataSetFromMatrix(countData = expr, colData = sampleTable, design = ~batch+condition)
dds <- DESeq(dds)
注意:Deseq2计算差异分析只接受count数据。
2,limma包的removeBatchEffect()函数
batch <- c(rep("1",10),rep("2",5))
expr <- removeBatchEffect(expr, batch)
So easy !
3,sva包的Combat()函数
batch <- c(rep("1",10),rep("2",5))
mod = model.matrix(~as.factor(group)) #group为分组信息。此步操作为建模。
exp2 = ComBat(dat=exp, batch=batch, mod=mod, par.prior=TRUE, ref.batch="1")
上述去除批次效应的方法选哪种都可以,但是生信大牛刘小乐教授实验室推荐用Combat()函数去除批次效应比较多一些。