Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R删除未从数据帧中复制的行_R_Dataframe - Fatal编程技术网

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)])