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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
posted @   nkwy2012  阅读(2102)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示