【问题标题】:remove ALL copies of duplicated rows from data frame (not just the duplicated copies) [duplicate]从数据框中删除所有重复行的副本(不仅仅是重复的副本)[重复]
【发布时间】:2016-02-15 17:49:42
【问题描述】:

我只想在数据集中保留不重复的行。这比“删除重复”更进一步;也就是说,我想消除所有重复行的副本,而不仅仅是重复的副本,并且只保留最初从未重复的行。

数据集:

    df <- data.frame(A = c(5,5,6,7,8,8,8), B = sample(1:100, 7))
    df
    A  B
    5 91
    5 46
    6 41
    7 98
    8 35
    8 56
    8 36

想把它变成:

    A  B
    6 41
    7 98

这是我尝试使用 dplyr 的方法:

    df_single <- df %>% count(A) %>% filter(n == 1)
    # Returns all the values of A for which only one row exists

    df %>% filter(A == df_single$A)
    # Trying to subset only those values of A, but this returns error 
    # "longer object length is not a multiple of shorter object length"

感谢您的帮助。一个不错的奖励是执行相反操作的附加代码(保留所有 OTHER 行 - 即,仅从数据集中消除非重复行)。

【问题讨论】:

    标签: r


    【解决方案1】:

    试试这个(不需要包):

    subset(df, !duplicated(A) & !duplicated(A, fromLast = TRUE))
    

    给予:

      A  B
    3 6 41
    4 7 98
    

    【讨论】:

    • 谢谢!这是一个聪明的解决方案。显然我需要提高我的谷歌搜索技能,因为我找不到重复的问题/答案。
    猜你喜欢
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2016-04-25
    • 2019-11-16
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多