【问题标题】:Subset duplicates based on two columns [duplicate]基于两列的子集重复[重复]
【发布时间】:2015-03-09 19:27:17
【问题描述】:

我的数据如下所示:

A   B
1   2
1A  2
1A  2
2   3
2   4
2   4
3A  0
3A  0
4A  1
4A  1
5   5

我想对数据进行子集化,并根据两列上的值提取所有重复的记录。我尝试使用 cbind 和 unique,但它们只提取唯一值。如果有帮助,我找不到反向子集函数。 谢谢。

【问题讨论】:

    标签: r duplicates subset


    【解决方案1】:

    你可以试试

     df1[duplicated(df1)|duplicated(df1, fromLast=TRUE),]
     #    A B
     #2  1A 2
     #3  1A 2
     #5   2 4
     #6   2 4
     #7  3A 0
     #8  3A 0
     #9  4A 1
     #10 4A 1
    

    数据

     df1 <- structure(list(A = c("1", "1A", "1A", "2", "2", "2", "3A",
     "3A", 
     "4A", "4A", "5"), B = c(2L, 2L, 2L, 3L, 4L, 4L, 0L, 0L, 1L, 1L, 
     5L)), .Names = c("A", "B"), class = "data.frame", row.names = c(NA, 
     -11L))
    

    【讨论】:

    • 它返回一个错误:[.data.frame(b, duplicated(b) | duplicated(b, fromLast = T)) 中的错误:选择了未定义的列
    • @Litwos 基于我帖子中的dput 输出,它没有给出任何错误。请复制/粘贴 dput 输出并查看错误是否仍然存在。
    • 它有效,但我将列转换为因子(as.factor)。那有必要吗?我现在将尝试使用我的所有数据。
    • @Litwos 没必要。除非出于特定目的需要,否则我不会使用因子,如果您查看str(df1),这些是非因子列。因子列的一个问题是,在您进行子集化后,您可能不会删除未使用的级别。 IE。 droplevels(df1[duplicated(...)
    • 明白。非常感谢您的帮助。我现在将尝试找到一个函数来计算新列中重复项的数量,但那是另一个线程。 :)
    猜你喜欢
    • 1970-01-01
    • 2017-05-08
    • 2014-02-06
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    相关资源
    最近更新 更多