超出限制的行值计数

时间:2016-01-12 08:12:53

标签: r

我试图将一个数据帧中的行值与从第二个数据帧读取的阈值限制进行比较。我想获得价值数量"每行"在dat中超过上限(UL来自极限df),低于下限(LL来自极限df)

dat <- data.frame(A = c(12, 23, 45), B = c(54, 73, 25), C = c(47, 52, 38))

limits <- data.frame(NAME = c('A', 'B', 'C'), UL = c(34, 12, 40), LL = c(55, 80, 50))

如何引用下面apply函数中限制表中的值?

apply(dat, 1, function(x) sum(x < limits$LL | x > limits$UL))

感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用下面的sapply

rownames(limits) <- limits[,"NAME"]
list.counts <- sapply(colnames(dat), function(n) {
                      dat.n <- dat[,n]
                      limits.n <- limits[n,]
                      sum(dat.n < limits.n[,"LL"] | dat.n > limits.n[,"UL"])})

答案 1 :(得分:0)

我这样做:(使用for而不是apply并考虑@ jogo的评论,因此更改UL和{{1在你的例子中):

LL