我有一些看起来像这样的数据:
> 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
答案 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)])