【问题标题】:Identify only non duplicated rows仅识别非重复行
【发布时间】:2020-01-27 23:18:21
【问题描述】:

我有一个包含许多重复行的数据集,我想只隔离非重复值。 我的 df 看起来像这样

df <- data.frame("group" = c("A", "A", "A","A","A","B","B","B"), 
                    "id" = c("id1", "id2", "id3", "id1", "id2","id1","id2","id1"), 
                    "Val" = c(10,10,10,10,10,12,12,12))

我想提取的只是没有重复的行。即我的最终数据集应该是这样的

final <- data.frame("group" = c("A","B"), 
                 "id" = c("id3","id2"), 
                 "Val" = c(10,12))

请注意,我对查找唯一值不感兴趣,而是对不重复的值感兴趣。 我知道如何找到唯一值,例如 df %&gt;% distinct() 就可以完成这项工作。这是我正在努力解决的个别非重复行

【问题讨论】:

    标签: r unique rows data-manipulation


    【解决方案1】:

    这是一种选择。

    library(dplyr)
    df %>%
       group_by(group) %>% 
       filter(!(duplicated(id)|duplicated(id, fromLast = TRUE)))
    

    或者单独使用dplyr

    df %>% 
         group_by_all %>%
         filter(n() ==1)
    

    或者使用base R

    df[!(duplicated(df[1:2])|duplicated(df[1:2], fromLast = TRUE)),]
    

    【讨论】:

    • @d.b.是的,我认为 OP 只需要选定的列数作为分组
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 2022-12-17
    • 1970-01-01
    • 2021-09-18
    • 2020-10-16
    • 2011-10-05
    • 1970-01-01
    相关资源
    最近更新 更多