识别并删除R中的重复数据

本教程介绍如何识别和删除R中的重复数据。

您将学习如何使用以下R base和dplyr函数:

1)R基础函数

duplicated():用于标识重复的元素和

unique():用于提取唯一元素,

2)distinct()[dplyr package]删除数据框中的重复行。

必需的包

演示数据集

查找并删除重复元素

提取独特元素

删除数据框中的重复行

总结




需要的包

library(tidyverse)

示例数据集

我们将使用R内置的iris数据集,首先将其转换为tibble数据帧(tbl_df),以便于进行数据分析。

my_data <- as_tibble(iris)

my_data

查找并删除重复的元素

R函数 duplicate() 返回一个逻辑向量,其中TRUE指定向量或数据帧的哪些元素是重复的。

创建如下向量:

x <- c(1,1,4,5,4,6)

要查找x中重复元素的位置,请使用以下命令:

duplicated(x)

## [1] FALSE  TRUE FALSE FALSE  TRUE FALSE

提取重复元素:

x[duplicated(x)]

## [1] 1 4

如果您想删除重复的元素,请使用  !duplicate(),!意思是逻辑否定:

x[!duplicated(x)]

## [1] 1 4 5 6

按照这种方法,可以根据列值从数据框中删除重复的行,如下所示

# Remove duplicates based on Sepal.Width columnsmy_data[!duplicated(my_data$Sepal.Width), ]


提取非重复的元素

x <- c(1,1,4,5,4,6)

unique(x)

## [1] 1 4 5 6

也可以在数据框上应用unique(),以删除重复的行,如下所示:

unique(my_data)

删除数据帧中的重复行

distinct() [dplyr包]函数可用于仅保留数据帧中的唯一/不同行。如果有重复的行,则只保留第一行。它是R基函数unique()的变形。

基于所有列,删除重复行

my_data %>% distinct()

基于某些列(变量),删除重复的行:

# Remove duplicated rows based on Sepal.Length

my_data %>% distinct(Sepal.Length, .keep_all =TRUE)

# Remove duplicated rows based on # Sepal.Length and Petal.Widthmy_data %>% distinct(Sepal.Length, Petal.Width, .keep_all =TRUE)


参数 .kep_all用于保存数据中的所有变量。

总结

在本章中,我们描述了识别和删除重复数据的重要函数:

基于一个或多个列值删除重复行:my_data%>%dplyr::distinct(Sepal.Length)

从向量和数据框中提取唯一元素的R基函数:unique(my_data)

确定重复元素的R基函数:duplicate(my_data)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本教程描述如何根据特定的条件来提取数据框的行。 在本教程中,您将从dplyr包中学习以下R函数: slice():...
    小白_加油阅读 8,751评论 0 3
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,514评论 0 13
  • 在本教程中,您将学习如何使用R函数select()和pull()[在dplyr包中]按名称和位置选择数据框的列。我...
    小白_加油阅读 19,093评论 0 11
  • 帮助与基础help(topic) 查看关于topic的帮助文档?topic 同上help.search("topi...
    Davey1220阅读 3,365评论 0 9
  • 从丫头军训开始,我和她爸每天都在等晚上的8:30,这个时间才可以打电话给丫头。 每天我都会问:丫头,今天开心吗? ...
    文宸公主阅读 270评论 0 0