【问题标题】:Remove both rows that duplicate in R删除在 R 中重复的两行
【发布时间】:2016-03-08 15:51:37
【问题描述】:

我正在尝试删除所有具有重复值的行。因此,在示例中,我想删除 x 列下具有 2 的两行和具有 6 的三行。我试过df[!duplicated(xy$x), ] 但这仍然给了我第一行重复的,我不想要任何一行。

    x <- c(1,2,2,4,5,6,6,6)
    y <- c(1888,1999,2000,2001,2004,2005,2010,2011)
    xy <- as.data.frame(cbind(x,y))
    xy
    x    y
  1 1 1888
  2 2 1999
  3 2 2000
  4 4 2001
  5 5 2004
  6 6 2005
  7 6 2010
  8 6 2011

我想要的是

    x     y
    1  1888
    4  2001
    5  2004

感谢任何帮助。我需要避免指定要删除的值,因为我正在处理包含数千条记录的数据框。

【问题讨论】:

  • xy[!(duplicated(xy$x)|duplicated(xy$x, fromLast = TRUE)), ]

标签: r dataframe


【解决方案1】:

我们可以的

xy[! xy$x %in% unique(xy[duplicated(xy$x), "x"]), ]
#  x    y
#1 1 1888
#4 4 2001
#5 5 2004

作为

unique(xy[duplicated(xy$x), "x"])

给出重复的x 的值。然后我们就可以过滤掉这些了。

【讨论】:

    【解决方案2】:

    你可以只计算和包含单例

    xy[1==ave(xy$x,xy$x,FUN=length),]
    
    xy 1 1 1888 4 4 2001 5 5 2004

    【讨论】:

      【解决方案3】:

      或者像这样:

      xy[xy$x %in% names(which(table(xy$x)==1)),]
        x    y
      1 1 1888
      4 4 2001
      5 5 2004
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-17
        • 2015-01-19
        • 2022-01-23
        • 2017-01-31
        • 1970-01-01
        • 1970-01-01
        • 2021-05-22
        • 2014-11-07
        相关资源
        最近更新 更多