美文网首页GEO SRA ArrayExpress ENA 数据挖掘NGS避坑指南
多个探针对应一个基因,是求平均值还是保留最大值?

多个探针对应一个基因,是求平均值还是保留最大值?

作者: 9d760c7ce737 | 来源:发表于2019-06-22 23:20 被阅读15次

    昨天差一个帖子,明天补上。
    在之前我写过一个帖子
    R语言学习路上的忆苦思甜
    里面讲的是各种分组计算的方法,最终在我的知识体系里,我觉得

    group_by联合summarise是分组计算的首选

    所以凡是这种需求,我都是这么做的。
    先创建一个极其简单的例子。

    data <- data.frame(ID=rep(LETTERS,each=3),
                       sample1=sample(seq(10,1000),78))
    

    第一列重复的字母,三个一组,从A-Z,第二列是对应的数值。
    现在的需求是,求每一个字母数值的最大值。
    这属于分组计算的需求,应当用group_by按照ID来分组,用summarise来计算最大值即可。

    library(dplyr)
    data1 <- data %>%
      group_by(ID) %>% 
      summarise_all(max)
    

    还可以怎么弄呢,这个方法我在这里见过。
    来完成你的生信作业,这是最有诚意的GEO数据库教程

    当时我们要对多个探针对应一个基因去重,其实去重有两种思路,一个是求多个探针的平均值,一个是求多个探针的最大值,我们当时选择的是最大值方案,去重用得到是disctinct函数,这个函数会保留看到的第一个元素,其余重复的都删除。
    我们为什么选择最大值方案,完全是从临床医生的角度考虑的,临床上经常出现这种情况:

    第一次细针穿刺患者诊断为癌症,治疗后,或者第二次取组织发现没有癌细胞,这时候究竟该如何诊断呢?

    答案毫无疑问,应该诊断为阳性。那么到了多个探针对应一个基因的情况,我选择最大值的理有也是类似的,各个探针的区别只是检测效率的差异,如果一个探针能够识别某个基因的表达量为10,那么其他几个都低于10,我们有理有相信,选最大值是靠谱的。

    我们只要先把数值按从大到小排序,再去重,就是实现了保留最大值。

    library(dplyr)
    data2 <- data %>% 
      arrange(desc(sample1)) %>% 
      distinct(ID,.keep_all = T) %>% 
      arrange(ID)
    

    我们发现两种方法,结果是一样的。

    假如有人还是觉得取平均值靠谱呢?比如,一个基因的甲基化水平,大家喜欢用多个甲基化位点的平均值来表示。那么group_by也是可以的,只要把max改成mean就可以了。

    library(dplyr)
    data3 <- data %>% 
      group_by(ID) %>% 
      summarise_all(mean)
    

    我们嘴上说的是summarise,为什么用的却是summarise_all, 因为summarise只能作用于一列,而summarise_all可以作用于分组的其他所有列,这个更符合实际情况。
    比如:

    data4 <- data.frame(ID=rep(LETTERS,each=3),
                       sample1=sample(seq(10,1000),78),
                       sample2=sample(seq(20,800),78),
                       sample3=sample(seq(50,600),78))
    

    这个代码可同时处理所有列

    library(dplyr)
    data4 <- data4 %>% 
      group_by(ID) %>% 
      summarise_all(mean)
    

    是不是很厉害呢?
    今天的数据完全由代码产生,每个人都可以操作,但是要注意,因为产生的是随机数,所以结果不会跟我一样。

    我是果子,明天见,明天有三个帖子。

    相关文章

      网友评论

        本文标题:多个探针对应一个基因,是求平均值还是保留最大值?

        本文链接:https://www.haomeiwen.com/subject/xtmpqctx.html