📅  最后修改于: 2023-12-03 15:24:04.026000             🧑  作者: Mango
在使用 R 进行数据分析时,我们经常需要处理数据集中的重复行。这些重复行可能会影响模型的准确性和结果的可靠性,因此需要删除。
dplyr
包来删除重复行R 语言最流行的数据操作包之一 dplyr
提供了 distinct()
函数来删除数据集中的重复行。该函数可以根据一列或多列的唯一值来确定哪些行是重复的。
library(dplyr)
# 创建一个包含重复行的数据集
df <- data.frame(
id = c(1, 2, 2, 3, 4, 4, 4),
name = c("John", "Amy", "Amy", "Mike", "Lisa", "Lisa", "Lisa"),
score = c(80, 90, 90, 85, 95, 95, 95)
)
# 使用 distinct() 函数删除重复行
df_new <- distinct(df, id, name, .keep_all = TRUE)
输出结果如下:
id name score
1 1 John 80
2 2 Amy 90
3 3 Mike 85
4 4 Lisa 95
可以看出,重复的行已被删除。
需要注意的是,distinct()
函数默认会保留第一个出现的重复行并删除其余的重复行,这可能会影响结果的准确性。为了保留所有重复行,我们需要在函数中使用 .keep_all = TRUE
参数。
base
包来删除重复行除了 dplyr
包外,R 语言的 base
包也提供了删除重复行的函数 unique()
和 duplicated()
。
unique()
函数可以返回数据集中的唯一行,但是并不会删除重复行。我们可以将 unique()
函数的返回值与原数据集进行比较,然后删除重复行。
# 使用 unique() 函数找到唯一行
unique_rows <- unique(df)
# 找到重复行
duplicate_rows <- df[duplicated(df) | duplicated(df, fromLast = TRUE),]
# 删除重复行
df_new <- df[!duplicated(df) & !duplicated(df, fromLast = TRUE),]
可以看出,df_new
数据集中已经删除了所有的重复行。
在 R 语言中,我们可以使用 dplyr
包的 distinct()
函数或 base
包的 unique()
函数和 duplicated()
函数来删除数据集中的重复行。具体选择哪个函数取决于个人习惯和处理数据集的复杂程度。