本教程介紹如何識別和刪除R中的重復(fù)數(shù)據(jù)歧焦。
您將學(xué)習(xí)如何使用以下R base和dplyr函數(shù):
1)R基礎(chǔ)函數(shù)
duplicated():用于標(biāo)識重復(fù)的元素和
unique():用于提取唯一元素别厘,
2)distinct()[dplyr package]刪除數(shù)據(jù)框中的重復(fù)行拳缠。
必需的包
演示數(shù)據(jù)集
查找并刪除重復(fù)元素
提取獨(dú)特元素
刪除數(shù)據(jù)框中的重復(fù)行
總結(jié)
需要的包
library(tidyverse)
示例數(shù)據(jù)集
我們將使用R內(nèi)置的iris數(shù)據(jù)集,首先將其轉(zhuǎn)換為tibble數(shù)據(jù)幀(tbl_df)高蜂,以便于進(jìn)行數(shù)據(jù)分析材鹦。
my_data <- as_tibble(iris)
my_data
查找并刪除重復(fù)的元素
R函數(shù)?duplicate()?返回一個邏輯向量可都,其中TRUE指定向量或數(shù)據(jù)幀的哪些元素是重復(fù)的。
創(chuàng)建如下向量:
x <- c(1,1,4,5,4,6)
要查找x中重復(fù)元素的位置婚陪,請使用以下命令:
duplicated(x)
## [1] FALSE? TRUE FALSE FALSE? TRUE FALSE
提取重復(fù)元素:
x[duplicated(x)]
## [1] 1 4
如果您想刪除重復(fù)的元素族沃,請使用? !duplicate(),!意思是邏輯否定:
x[!duplicated(x)]
## [1] 1 4 5 6
按照這種方法泌参,可以根據(jù)列值從數(shù)據(jù)框中刪除重復(fù)的行脆淹,如下所示
# Remove duplicates based on Sepal.Width columnsmy_data[!duplicated(my_data$Sepal.Width), ]
提取非重復(fù)的元素
x <- c(1,1,4,5,4,6)
unique(x)
## [1] 1 4 5 6
也可以在數(shù)據(jù)框上應(yīng)用unique(),以刪除重復(fù)的行沽一,如下所示:
unique(my_data)
刪除數(shù)據(jù)幀中的重復(fù)行
distinct() [dplyr包]函數(shù)可用于僅保留數(shù)據(jù)幀中的唯一/不同行盖溺。如果有重復(fù)的行,則只保留第一行铣缠。它是R基函數(shù)unique()的變形烘嘱。
基于所有列,刪除重復(fù)行
my_data %>% distinct()
基于某些列(變量)攘残,刪除重復(fù)的行:
# 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)
參數(shù) .kep_all用于保存數(shù)據(jù)中的所有變量拙友。
總結(jié)
在本章中,我們描述了識別和刪除重復(fù)數(shù)據(jù)的重要函數(shù):
基于一個或多個列值刪除重復(fù)行:my_data%>%dplyr::distinct(Sepal.Length)
從向量和數(shù)據(jù)框中提取唯一元素的R基函數(shù):unique(my_data)
確定重復(fù)元素的R基函數(shù):duplicate(my_data)