R使用限制在数据框中查找数据

时间:2017-06-20 06:59:04

标签: r dataframe limits

我有一个大数据框填充数字,第二个数据框有每个列的限制(高和低可接受范围)。我想知道如何使用上限和下限来查找超出该范围的数据。我可以用for循环来做这个,但它是一个混乱的解决方案(我确定效率低下)所以我想知道是否还有其他方法。

例如

#Create a data frame with values ranging from 0-10
sampleData <- data.frame(replicate(9,sample(0:10,10, rep=TRUE)))

  X1 X2 X3 X4 X5 X6 X7 X8 X9
1  1  7  9  0  7  3  0  0  8
2  4  8  3  4  9  6  3  2  3
3  9  7  5  2  7  5 10  9  4
4  2  6  2  1  3  9  4  3  9
5 10  2  2  6  4  7  4  9  7

#Have another data frame with our limits
  X1 X2 X3 X4 X5 X6 X7 X8 X9
1  1  7  3  4  7  3  0  0  3
2  4  8  9 10  9  6  3  2  8

我想根据超出我们对该列的限制的值来了解哪些行已失败。所以失败就是

Col 1: 3,5
Col 2: 4,5
Col 3: 4,5
Col 4: 1,3,4
Col 5: 4,5
Col 6: 4,5
Col 7: 3,4,5
Col 8: 3,4,5
Col 9: 4

谢谢!

1 个答案:

答案 0 :(得分:2)

我们可以使用基础R mapply。假设您的限制数据框称为limits。我们从两个数据帧并行传递列,并选择扩展限制的索引。

mapply(function(x, y) which(x < y[1] | x > y[2]) , sampleData, limits)


#$X1
#[1] 3 5

#$X2
#[1] 4 5

#$X3
#[1] 4 5

#$X4
#[1] 1 3 4

#$X5
#[1] 4 5

#$X6
#[1] 4 5

#$X7
#[1] 3 4 5

#$X8
#[1] 3 4 5

#$X9
#[1] 4