R删除未从数据帧中复制的行
我有一些数据看起来像:R删除未从数据帧中复制的行,r,dataframe,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 我得到: 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 如果一个值在一个向量中重复了m次,则第一次关联不会被duplicated标记为重复,随后的m-1值
> 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
我得到:
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
如果一个值在一个向量中重复了m次,则第一次关联不会被
duplicated
标记为重复,随后的m-1值将被标记为重复。要获取所有m个副本,我通常会使用duplicated(…)| duplicated(…,fromLast=TRUE)
:
在
数据表中
我会:
library(data.table)
setDT(data,key="x")
data[.(data[duplicated(data),unique(x)])]
或者更简单:
setDT(data)[,if (.N>1) .SD,by=x]
另一种选择:
subset(data, x %in% x[duplicated(x)])
有趣的是,前几天我刚刚问了这个问题的Python版本:
setDT(data)[,if (.N>1) .SD,by=x]
subset(data, x %in% x[duplicated(x)])