• GEO芯片数据去重--转载


    转载:https://www.jianshu.com/p/4b2781a125e4

    一 数据准备

    使用GEO数据库的表达数据,抽取一些并稍加处理(为方便展示)
     
    data <- read.csv("A.csv",header=TRUE)
    
     
    img

    可以明显看到ID_REF存在重复,那要怎么处理呢?

    二 一个不留

    对于重复的行,一个不留!

    1 unique 直接去重

    data1 <- unique(data)
    data1
    
     
    img

    简单,直接,可以看到第9行完全重复的已经被删除。

    如果我还想去掉ID_REF重复的行,怎么办?

    2 duplicated 可选去重

    1)删除数据集中完全重复的行,同unique

    data2 <- data[!duplicated(data),]
    
     
    img

    2)选择性删除

    A:删除某一列存在重复的行

    data2 <- data[!duplicated(data$ID_REF),]  
    
     
    img

    删除了ID_REF列存在重复的行,搞定!

    B:删除某几列重复的行

    #等价
    data2 <- data[!duplicated(data[,c("ID_REF","GSM74876")]),]
    data2 <- data[!duplicated(data[,c(1,3)]),]
    
     
    img

    删除了ID_REF列和GSM74876列均重复的行,Done!

    三 择”优“录取

    存在重复,但是不想完全删除,根据数据处理的目的保留一行。

    1 aggregate函数

    A : ID_REF重复行,保留其均值

    data3 <- aggregate( . ~ ID_REF,data=data, mean)
    
     
    img

    B: ID_REF重复行,保留其最大值

    data3 <- aggregate( . ~ ID_REF,data=data, max)
    

    2 dplyr函数

    A : ID_REF重复行,保留其均值,同aggregate函数结果一致。

    library(dplyr)
    data4 <- data %>% group_by(ID_REF) %>% summarise_all(mean)
    
     
    img

    四 芯片表达数据去重

    芯片表达数据中,会存在一个基因多个探针的情况,此处选择在所有样本中表达量之和最大的探针。

    library(tibble)
    data5 <- data %>% 
     #计算每个探针(行)的表达量均值
     mutate(rowMean =rowMeans(.[grep("GSM", names(.))])) %>% 
     #表达量均值从大到小排序
     arrange(desc(rowMean)) %>% 
     # 选择第一个,即为表达量最大值
     distinct(ID_REF,.keep_all = T) %>% 
     #去除rowMean这一列
     select(-rowMean) %>% 
     # 将ID_REF列变成行名
     column_to_rownames(var = "ID_REF")
    
     
    img

    链接:https://www.jianshu.com/p/4b2781a125e4
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    LAMP的搭建
    linux利用命令重置大量密码
    CSS的应用下
    Day13 CSS的与应用
    Day12 CSS简单用法
    Day12 前端html
    Day11 数据库的基本语法(偏重于查询)
    Java-->把txt中的所有字符按照码表值排序
    Java-->将txt文件的所有行反转
    Java-->在txt文件每一行前加行数和冒号
  • 原文地址:https://www.cnblogs.com/nkwy2012/p/12596529.html
Copyright © 2020-2023  润新知