R从数据框中删除未复制的行

时间:2015-06-13 15:49:26

标签: r dataframe

我有一些看起来像这样的数据:

> data<-data.frame(x=c(1,1,2,3,4,2,2), y=c(1,2,3,4,5,6,8))
  x y
1 1 1
2 1 2
3 2 3
4 3 4
5 4 5
6 2 6
7 2 8

我正在以下一种方式使用副本:

data[duplicated(data[,1]), ]

我得到了:

  x y
2 1 2
6 2 6
7 2 8

我想:

  x y
1 1 1    
2 1 2
3 2 3
6 2 6
7 2 8

3 个答案:

答案 0 :(得分:2)

如果某个值在向量中重复了m次,则第一个事件不会被duplicated标记为重复,并且后续的m-1值将标记为重复。要获得所有m个重复项,我通常会使用duplicated(...) | duplicated(..., fromLast=TRUE)

data[duplicated(data[,1]) | duplicated(data[,1], fromLast=TRUE),]
#   x y
# 1 1 1
# 2 1 2
# 3 2 3
# 6 2 6
# 7 2 8

答案 1 :(得分:0)

data.table我做:

library(data.table)
setDT(data,key="x")
data[.(data[duplicated(data),unique(x)])]

甚至更简单:

setDT(data)[,if (.N>1) .SD,by=x]

答案 2 :(得分:0)

另一种选择:

subset(data, x %in% x[duplicated(x)])