R:如何按列删除重复的行

标签 r duplicates

这个问题在这里已经有了答案:





Remove duplicated rows using dplyr

(6 个回答)


3年前关闭。



df <- data.frame(id = c(1, 1, 1, 2, 2),
                 gender = c("Female", "Female", "Male", "Female", "Male"),
                 variant = c("a", "b", "c", "d", "e"))
> df
  id gender variant
1  1 Female       a
2  1 Female       b
3  1   Male       c
4  2 Female       d
5  2   Male       e

我想根据 gender 在我的 data.frame 中删除重复的行我的数据集中的列。我知道有人问过类似的问题( here ),但这里的区别在于我想删除数据集每个子集中的重复行,其中每个子集由唯一的 id 定义。 .

我想要的结果是这样的:
  id gender variant
1  1 Female       a
3  1   Male       c
4  2 Female       d
5  2   Male       e

我已经尝试了以下方法并且它有效,但我想知道是否有更清洁、更有效的方法来做到这一点?
out = list()
for(i in 1:2){
  df2 <- subset(df, id == i)
  out[[i]] <- df2[!duplicated(df2$gender), ]
}
do.call(rbind.data.frame, out)

最佳答案

df[!duplicated(df[ , c("id","gender")]),]

#     id  gender  variant
#  1   1  Female     a
#  3   1   Male      c
#  4   2  Female     d
#  5   2   Male      e

使用 subset 执行此操作的另一种方法如下:
subset(df, !duplicated(subset(df, select=c(id, gender))))

#   id  gender variant
# 1  1  Female     a
# 3  1    Male     c
# 4  2  Female     d
# 5  2    Male     e

关于R:如何按列删除重复的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46656833/

相关文章:

python - Groupby 中的项目计数

r - 如何删除特定列中值为零的行?

R 编码 - 保存为 UTF-8,但字符错误(我认为)

java - 程序未给出预期在 ArrayList 中找到重复项的结果

R - 添加具有几乎相同名称的列并使用正确的列名称保存

python - 保持具有最大重叠的相似行 Pandas 数据框

r - 创建网络 session

R 神经网络包对于数百万条记录来说太慢

R ChartSeries 添加带有点的额外图表

SQL选择一列中具有重复值的所有行