【问题标题】:Drop rows which are duplicates regarding certain columns删除与某些列重复的行
【发布时间】:2023-02-25 08:08:41
【问题描述】:

我想识别并删除在某些方面重复的观察结果。

在我的示例中,我想去掉第 1 行和第 6 行,因为它们在 V1 和 V2 中是相同的。他们在 V3 中的不同应该无关紧要。

df <- data.frame(V1 = c("a","b","c","a","c","a"),
                 V2 = c(1,2,1,2,3,1),
                 V3 = c(1,2,3,4,5,6))

应用 dplyr::distinct(df, V1, V2) 会导致第 6 行被丢弃,而第 1 行仍然存在。正如我所说,我希望删除第 1 行和第 6 行。我确信这个问题是微不足道的,但我想不出正确的搜索词......

谢谢!

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    我们可以分组然后过滤:

    group_by(df, V1, V2) %>%
      filter(n() == 1) %>%
      ungroup()
    # # A tibble: 4 × 3
    #   V1       V2    V3
    #   <chr> <dbl> <dbl>
    # 1 b         2     2
    # 2 c         1     3
    # 3 a         2     4
    # 4 c         3     5
    

    【讨论】:

    • 或者使用 dplyr 1.1.0,filter(df, n() == 1, .by = c(V1, V2))
    • 哈哈,老天爷,你在跟我开玩笑吗……在另一个上下文中,我使用group_by()n() 创建了一个计数变量,但我并没有想到将其应用于我的问题。感谢您提供这个非常简洁的解决方案。
    猜你喜欢
    • 2011-10-10
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-14
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    相关资源
    最近更新 更多