【问题标题】:Subset rows which are not duplicates不重复的子集行
【发布时间】:2016-02-21 14:29:26
【问题描述】:

我有一个主要由重复行组成的数据集(data.frame)。我想对其进行子集化,以便仅获取最初没有重复的行。原始df示例:

df1 <- data.frame( ID = c("1", "1","2","2","3","3","4","4"), V_1 = c(2011,2011,NA,NA,1,10,7,7), V_2= c(5,5,6,6,15,15,8,2))    

我想得到的答案:

df2 <- data.frame( ID = c("3","3","4","4"), V_1 = c(1,10,7,7), V_2= c(15,15,8,2))    

使用unique(df1) 函数为我提供了唯一行的完整列表(在示例中为 6)。由于我的 df 有超过 200k 行,这对我来说还不够。

我搜索过类似的问题: Subset with unique cases, based on multiple columnsFilter rows based on multiple column conditions R,但他们都没有帮助我。

【问题讨论】:

    标签: r


    【解决方案1】:

    给你

    duplicated.i = duplicated(df1) | (duplicated(df1[nrow(df1):1,]))[nrow(df1):1]
    df2 = df1[!duplicated.i,]
    
    # ID V_1 V_2
    # 5  3   1  15
    # 6  3  10  15
    # 7  4   7   8
    # 8  4   7   2
    

    【讨论】:

      【解决方案2】:

      我们可以删除重复行的 ID 并将它们从整个数据框中排除

      df1[!df1$ID %in% df1[duplicated(df1),1 ], ]
      
      #  ID V_1 V_2
      #5  3   1  15
      #6  3  10  15
      #7  4   7   8
      #8  4   7   2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-08
        • 1970-01-01
        • 2020-04-02
        • 1970-01-01
        • 2017-04-30
        • 2018-02-13
        • 1970-01-01
        相关资源
        最近更新 更多