R 基于列的子集查找矩阵中的唯一元素
我有一张桌子要改造R 基于列的子集查找矩阵中的唯一元素,r,matrix,duplicates,R,Matrix,Duplicates,我有一张桌子要改造 t LabelA LabelB start stop [1,] 1 4 9 1 2 [2,] 1 3 5 1 2 [3,] 1 1 6 1 2 [4,] 2 4 9 1 2 [5,] 2 3 5 1 2 [6,] 2 1 6 1 2 [7,
t LabelA LabelB start stop
[1,] 1 4 9 1 2
[2,] 1 3 5 1 2
[3,] 1 1 6 1 2
[4,] 2 4 9 1 2
[5,] 2 3 5 1 2
[6,] 2 1 6 1 2
[7,] 2 7 2 2 2
[8,] 3 3 5 3 4
[9,] 3 1 6 3 4
[10,] 3 7 2 3 5
[11,] 3 4 9 3 5
我希望以一种方式过滤数据,即删除第一列中仅相差三个数字的行(不完全删除,只删除重复的行)。因此,对于第1行和第4行,表中只应保留第1行。或者,对于第3行和第9行,只应保留第9行。重要的是保留第一列中的信息,并且表中保留最早出现的行,而不是其他事件。您可以使用重复的
:
mat[!duplicated(as.data.frame(mat[, -1])), ]
t LabelA LabelB start stop
[1,] 1 4 9 1 2
[2,] 1 3 5 1 2
[3,] 1 1 6 1 2
[7,] 2 7 2 2 2
[8,] 3 3 5 3 4
[9,] 3 1 6 3 4
[10,] 3 7 2 3 5
[11,] 3 4 9 3 5
其中mat
是矩阵的名称。尝试使用复制函数:
mymx <- matrix(c(1,4,9,1,2 ,1,3,5,1,2 ,1,1,6,1,2 ,2,4,9,1,2 ,2,3,5,1,2 ,2,1,6,1,2 ,2,7,2,2,2 ,3,3,5,3,4 ,3,1,6,3,4 ,3,7,2,3,5 ,3,4,9,3,5), ncol=5, byrow=T)
mymx[!duplicated(mymx[,-1]),]
> mymx[!duplicated(mymx[,-1]),]
[,1] [,2] [,3] [,4] [,5]
[1,] 1 4 9 1 2
[2,] 1 3 5 1 2
[3,] 1 1 6 1 2
[4,] 2 7 2 2 2
[5,] 3 3 5 3 4
[6,] 3 1 6 3 4
[7,] 3 7 2 3 5
[8,] 3 4 9 3 5
mymx mymx[!重复(mymx[,-1]),]
[,1] [,2] [,3] [,4] [,5]
[1,] 1 4 9 1 2
[2,] 1 3 5 1 2
[3,] 1 1 6 1 2
[4,] 2 7 2 2 2
[5,] 3 3 5 3 4
[6,] 3 1 6 3 4
[7,] 3 7 2 3 5
[8,] 3 4 9 3 5
能否指定所需的输出