根据单列查找所有唯一行,并排除所有重复行

时间:2019-07-16 13:00:32

标签: r

我有两个要求

  1. 在单个列中找到所有重复值
  2. 找到所有唯一行[与第一个问题相反]这甚至不应该包括来自重复行的单对

我从最近2周开始学习。观看YouTube视频,引荐Stackoverflow和其他网站,所以并不多。如果有任何材料或课程,请参考。

所以我在这里找到我的第一个问题的答案 (Find duplicated elements with dplyr

# All duplicated elements
mtcars %>%
  filter(carb %in% unique(.[["carb"]][duplicated(.[["carb"]])]))

所以我想要与此相反

谢谢

P.S。我没有技术背景。我在这里经历了几个问题和答案,所以我可能已经找到了答案或需要一些调整,而我完全忽略了这一点

1 个答案:

答案 0 :(得分:1)

您可能已经意识到,uniqueduplicated并不是您所需要的,因为它们本质上会导致保留所有不同的值,并且只会折叠这些值的“多个副本”。 / p>

对于第一个问题,您可以group_by感兴趣的列,然后仅保留具有多行的那些组(通过filter):

mtcars %>%
    group_by(mpg) %>%
    filter(length(mpg) > 1) %>%
    ungroup()

本示例选择mpg值重复的所有行。之所以可以这样做是因为,将诸如filter之类的dplyr操作应用于各个组后,它们才能单独工作。这意味着以上代码中的length(mpg)将分别返回每个组的mpg列向量的长度。

要反转逻辑,就足以反转过滤条件:

mtcars %>%
    group_by(mpg) %>%
    filter(length(mpg) == 1) %>%
    ungroup()