对照组和实验组

Python016

对照组和实验组,第1张

GEO的芯片分析,一到了差异分析部分,几乎没有悬念,因为其中的步骤都是limma包的作者定义的,我们没有修改的空间,这里面常见的坑就是,

不懂内在逻辑的时候,想要正确完全靠的是运气,主要看两组的命名,比如,一个3vs3的实验,我们的分组是这个样子的。

前面三个是control,后面三个是treat。这时候,算出来的结果就是treat比上control,没有问题。因为默认情况下因子的排序是按照字母的前后顺序排列的,control在treat之前。

如果我们把两组命名为,cancer 和normal

那么由于n在c的后面,所以最终的结果会变成normal比上cancer,所以的差异基因变化值都会相反。

如何 避免呢?这里要用到因子的排序。只要每次在levels里面,把真实的对照组放在前面就可以了。

换一个名字也是一样的,只要把对照组放在前面即可

设置了分组后,接下来的操作是固定的

最终只有输出差异基因的时候要强调一下,coef要选择2。

其中,group不一定是要很整齐的前面是对照,后面是处理,样本的顺序可以是乱的。比如这一篇中的group也是可以的。

GEO的样本名称太多而且排序不规则,你们都是手动分组的么?

第一次件ifelse嵌套这么多的使用,你是跟自己有仇么,非要把问题搞的这么复杂。。。

建议用if条件句,或者BASE中原始方法修改。

ifelse个人觉得嵌套两个最优。再多必然晕。

使用R包dplyr的函数arrange更简单,更简洁:

#多条件排序:使用dplyr::arrange

library(dplyr)

data("iris")

head(iris)

#第一列升序,然后是第三列升序

arrange(iris,iris[,1],iris[,3])

#第一列升序,然后是第三列降序

arrange(iris,iris[,1],-iris[,3])

扩展资料

R语言排序函数sort(),rank(),order()

>x<-c(97,93,85,74,32,100,99,67)

>sort(x)

[1]32677485939799100

>order(x)

[1]58432176

>rank(x)

[1]65431872