搜索
查看: 3893|回复: 0

数据处理|数据查重怎么办?去重,就这么办!

[复制链接]

10

主题

11

帖子

181

积分

注册会员

Rank: 2

积分
181
发表于 2019-11-5 09:58:22 | 显示全部楼层 |阅读模式
本文首发于“生信补给站”公众号,https://mp.weixin.qq.com/s/oxOSaVxQNPDxFDq5Wu9WjQ
更多关于R语言,ggplot2绘图,生信分析的内容,敬请关注小号。

论文查重怎么办? 就那么办!OK!
数据查重怎么办? 就这么办! KO!
数据清洗过程中的典型问题:缺失值、异常值和重复值处理,本次简单介绍一些R处理重复值的用法:
  • 将符合目标的重复行全部删掉;
  • 存在重复的行,根据需求保留一行


一 数据准备
使用GEO数据库的表达数据,抽取一些并稍加处理(为方便展示)
data <- read.csv("A.csv",header=TRUE)
可以明显看到ID_REF存在重复,那要怎么处理呢?

二 一个不留
对于重复的行,一个不留!
1 unique 直接去重data1 <- unique(data)
data1
简单,直接,可以看到第9行完全重复的已经被删除。
如果我还想去掉ID_REF重复的行,怎么办?

2 duplicated 可选去重1)删除数据集中完全重复的行,同uniquedata2 <- data[!duplicated(data),]
2)选择性删除A:删除某一列存在重复的行data2 <- data[!duplicated(data$ID_REF),]  
删除了ID_REF列存在重复的行,搞定!
B:删除某几列重复的行#等价
data2 <- data[!duplicated(data[,c("ID_REF","GSM74876")]),]
data2 <- data[!duplicated(data[,c(1,3)]),]
删除了ID_REF列和GSM74876列均重复的行,Done!

三 择”优“录取
存在重复,但是不想完全删除,根据数据处理的目的保留一行。
1 aggregate函数A : ID_REF重复行,保留其均值data3 <- aggregate( . ~ ID_REF,data=data, mean)
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)
四 芯片表达数据去重
芯片表达数据中,会存在一个基因多个探针的情况,此处选择在所有样本中表达量之和最大的探针。
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")

好了,常用的数据去重方法先介绍这些,绝对比论文查重简单多了!

◆ ◆ ◆  ◆ ◆
数据分析相关:

【觉得不错,右下角点个“在看”,期待您的转发,谢谢!】

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2023-3-25 12:26 , Processed in 0.114452 second(s), 33 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.