【问题标题】:How can I remove a row which is a duplicate for certain columns, and keep the one row with a specific value/character of a non-duplicate column如何删除与某些列重复的行,并保留具有非重复列的特定值/字符的一行
【发布时间】:2019-09-16 16:39:14
【问题描述】:

如何删除与某些列重复的行,并保留具有非重复列的特定值/字符的一行?

换句话说: 如何选择保留哪一行,而另一行删除一些重复的列

这是用于 R data.frame。

我已经试过了:

Data.frame 是 X

 deduped.data <- unique( X[ , 1:5 ] )

问题:我无法保留具有非重复行的列

X <- X %>% distinct()

问题:我不知道哪一行可以删除,某些列中有重复项

在以前的问题列表中,我没有找到答案:保留/删除哪一行的信息可用

deduped.data <- unique( X[ , 1:5 ] )
X <- X %>% distinct()

一个例子

Data.frame X:

第 1 行:性别:男性,年龄:20,国家:意大利

第 2 行:性别:男性,年龄:20,国家:法国

第 3 行等

我想删除第 1 列和第 2 列的重复项并保留 Country Italy。我希望第 2 行被删除。据我所知,unique()distinct() 都可以做到这一点。

【问题讨论】:

  • 试试X %&gt;% distinct(Gender, Age, .keep_all = TRUE)。来自?distinct:.keep_all 如果TRUE,则将所有变量保留在.data 中。如果... 的组合不是不同的,则保留第一行值。
  • 是的,它成功了!通过X &lt;- arrange(X, desc(country)),我可以安排意大利排在第一位,我想保留它。谢谢!

标签: r duplicates row conditional-statements


【解决方案1】:

这会删除重复项,您可以在重复参数中指定列。 如果你想保留不重复的,你可以删除!

X &lt;- X[, !duplicated(colnames(X))]

【讨论】:

  • 是的,它成功了!通过X &lt;- arrange(X, desc(country)),我可以安排意大利排在第一位,我想保留它。谢谢!
  • 回答。 @Mark 和 @StevenBeaupr 以及更多信息一起 - 概述:数据框 X &lt;- data.frame(gender=c("male", "male", "male", "male", "male", "male", "female", "male", "female", "female"), age=c(21, 21, 21, 21, 20, 33, 25, 20, 25, 40), country=c("France", "France", "France", "France", "Italy", "France", "France", "France", "Italy", "Italy")) 排列 X &lt;- arrange(X, desc(country)) 三个选项 X[!duplicated(X[,1:2]),]group_by(X, gender, age) %&gt;% slice(1)library(dplyr) X %&gt;% distinct(gender, age, .keep_all = TRUE)
猜你喜欢
  • 2021-09-24
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 2016-10-13
  • 2019-06-10
  • 1970-01-01
  • 2020-07-08
  • 1970-01-01
相关资源
最近更新 更多