删除在R中复制的两行

时间:2016-03-06 21:37:59

标签: r dataframe

我正在尝试删除所有具有重复值的行。因此,在示例中,我想删除具有2的行和在x列下具有6的3行。我已经尝试了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

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

3 个答案:

答案 0 :(得分:2)

您可以统计并仅包含单身人士

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

答案 1 :(得分:1)

我们可以做到

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

as

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

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

答案 2 :(得分:1)

或者像这样:

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