R使用限制在数据框中查找数据
R using limits to find data in data frame
我有一个充满数字的大数据框和第二个数据框,每列都有限制(高和低可接受范围)。我想知道如何使用上限和下限来查找每列超出该范围的数据。我可以用 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
谢谢!
我们可以使用基数 R mapply
。假设您的限制数据框称为 limits
。我们从数据帧和 select 扩展限制的索引中并行传递列。
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
我有一个充满数字的大数据框和第二个数据框,每列都有限制(高和低可接受范围)。我想知道如何使用上限和下限来查找每列超出该范围的数据。我可以用 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
谢谢!
我们可以使用基数 R mapply
。假设您的限制数据框称为 limits
。我们从数据帧和 select 扩展限制的索引中并行传递列。
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