删除R中具有重复值的行的所有副本

删除R中具有重复值的行的所有副本,r,R,我的数据集如下所示: name position type A 12 S B 13 T C 12 S D 12 T E 11 S F 10 S 我想删除位置和类型重复的行 我尝试使用duplicated函数查找重复的行,但我不知道如何删除所有具有重复值的行 dup = db[duplicated(db[2:3]),] 我想删除位置和类型相同但名称不同的行。 我

我的数据集如下所示:

name  position type
A       12      S
B       13      T
C       12      S
D       12      T
E       11      S
F       10      S
我想删除位置和类型重复的行

我尝试使用
duplicated
函数查找重复的行,但我不知道如何删除所有具有重复值的行

dup = db[duplicated(db[2:3]),]
我想删除位置和类型相同但名称不同的行。 我期望的输出是:

name  position type
B       13      T
D       12      T
E       11      S
F       10      S

duplicated
仅从重复值开始返回TRUE。要返回所有重复的元素,我们可能需要反向应用
duplicated
,即从最后一个值到第一个值,并使用
条件,即
,对数据集进行求反和子集化

db[!(duplicated(db[2:3])|duplicated(db[2:3], fromLast=TRUE)),]
#   name position type
# 2    B       13    T
# 4    D       12    T
# 5    E       11    S
# 6    F       10    S
软件包使用直观易读的代码来实现这一点

下面是一个玩具示例,从
mtcars
中选取行,其中没有重复的
cyl
gear

library(dplyr)
mtcars %>%
  group_by(cyl, gear) %>%
  filter(n() == 1) %>%
  ungroup()

Source: local data frame [2 x 11]

    mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
  (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)
1  21.5     4 120.1    97  3.70 2.465 20.01     1     0     3     1
2  19.7     6 145.0   175  3.62 2.770 15.50     0     1     5     6
cyl和gear的这两种组合是唯一独特的组合,您可以通过以下方式进行确认:

mtcars %>%
  count(cyl, gear)

你能发布一些代码吗?类似的问题:@akrun Frank链接到的问题是一个有用的相关帖子,但我认为这不应该被关闭,因为它不是完全重复的。一个返回重复项的索引,这个删除它们。有向量的例子,这是关于data.frame的。这只是询问重复变量的一个子集。@SamFirke好的,我重新打开了它。感谢akrun的清晰而有用的解释!