我已经使用复制函数查看了一些示例。但是,它似乎不适用于我的问题。
这是一个例子,其中一个可能得到2个cols的随机数矩阵。
set.seed(56)
a <- cbind(sample(1:6,10,replace=TRUE),sample(1:5,10,replace=TRUE))
b <- a[order(a[,1]),]
[,1] [,2]
[1,] 2 1
[2,] 4 3
[3,] 4 2
[4,] 5 4
[5,] 5 1
[6,] 6 5
[7,] 6 4
我希望第一个col是唯一的。但是,我希望第二个col值小于第一个col中的相邻值。
即。结果看起来像。
[,1] [,2]
[1,] 2 1
[2,] 4 3
[3,] 5 4
[4,] 6 5
第一列中的值始终在变化,但第二列必须始终比第一列中的值小1。
答案 0 :(得分:1)
首先获取第2列比第1列少1行的行:
result = a[a[, 2] == a[, 1] - 1, ]
然后删除重复:
result = result[!duplicated(result[, 1]), ]
答案 1 :(得分:1)
您可以先通过第一列中的唯一值split
,然后从符合您要求的每个子组中提取第一行。
b = as.data.frame(b)
t(sapply(split(b, b$V1), function(x) x[which(x[,2] < x[,1])[1],]))