前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据处理|数据查重怎么办?去重,就这么办!

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

作者头像
生信补给站
发布2020-08-06 11:21:22
1.7K0
发布2020-08-06 11:21:22
举报
文章被收录于专栏:生信补给站生信补给站

论文查重怎么办?就那么办!OK!

数据查重怎么办?就这么办!KO!

数据清洗过程中的典型问题:数据分析|R-缺失值处理数据分析|R-异常值处理和重复值处理,本次简单介绍一些R处理重复值的用法:

  • 将符合目标的重复行全部删掉;
  • 存在重复的行,根据需求保留一行

数据准备

使用GEO数据库的表达数据,抽取一些并稍加处理(为方便展示)

代码语言:javascript
复制
data <- read.csv("A.csv",header=TRUE)

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

一个不留

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

1. unique 直接去重

代码语言:javascript
复制
data1 <- unique(data)
data1

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

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

2. duplicated 可选去重

1)删除数据集中完全重复的行,同unique
代码语言:javascript
复制
data2 <- data[!duplicated(data),]
2)选择性删除
A:删除某一列存在重复的行
代码语言:javascript
复制
data2 <- data[!duplicated(data$ID_REF),]  

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

B:删除某几列重复的行
代码语言:javascript
复制
#等价
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)

保留其最大值如下即可:
代码语言:javascript
复制
data3 <- aggregate( . ~ ID_REF,data=data, max)

2 dplyr函数

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

代码语言:javascript
复制
代码语言:javascript
复制
library(dplyr)
data4 <- data %>% group_by(ID_REF) %>% summarise_all(mean)

表达量去重

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

代码语言:javascript
复制
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")

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信补给站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. unique 直接去重
  • 2. duplicated 可选去重
    • 1)删除数据集中完全重复的行,同unique
      • 2)选择性删除
        • A:删除某一列存在重复的行
          • B:删除某几列重复的行
          • 1. aggregate函数
            • A : ID_REF重复行,保留其均值
              • 保留其最大值如下即可:
              • 2 dplyr函数
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档