【问题标题】:Remove duplicates conditional on dummy variable删除以虚拟变量为条件的重复项
【发布时间】:2019-02-04 16:18:55
【问题描述】:

我有一个带有部分重复 ID 和一个虚拟变量的数据框。我想删除所有具有重复 ID 的行,但前提是虚拟变量等于 1。

考虑以下示例数据:

# Example data
df <- data.frame(id = c(1, 2, 3, 3, 4, 4, 5, 5, 5),
                 values = c(0, 1, 1, 0, 0, 0, 1, 0, 0))

输出应该如下所示

# Expected output
df_expected <- df[- c(3, 7), ]

如何删除values 等于 1 的所有重复项?

【问题讨论】:

    标签: r dataframe duplicates


    【解决方案1】:

    我们可以在 'id' 列上使用 duplicated 和 'values' 为 1 的条件创建逻辑条件

    i1 <- (duplicated(df$id)|duplicated(df$id, fromLast = TRUE)) & df$values == 1
    df[!i1, ]
    #  id values
    #1  1      0
    #2  2      1
    #4  3      0
    #5  4      0
    #6  4      0
    #8  5      0
    #9  5      0
    

    或与filter 来自dplyr

    library(dplyr)
    df %>% 
       group_by(id) %>% 
       filter(!values|n() == 1)
    

    【讨论】:

      猜你喜欢
      • 2019-03-08
      • 2019-12-03
      • 2020-03-10
      • 2018-08-02
      • 2023-03-14
      • 2018-07-15
      • 2016-10-21
      • 2016-09-16
      • 1970-01-01
      相关资源
      最近更新 更多