r语言 - 使用多个和变量过滤器对数据进行计数



我有一个包含多列的数据框 df。我想计算满足一定数量的不等式的值。对于两个给定的变量,我将使用:

res <- sum(df$column1 > x1 & df$column2 > x2)

但是,我希望它更加灵活,采用可变数量的列名和关联的值,例如:

columns <- c("column1", "column2", ..., "columnn")
values <- c(x1, x2, ..., xn)
res <- sum(df$column1 > x1 & df$column2 > x2 & ... & df$columnn > xn)

如何使用标准数据帧技术有效地实现这种变量过滤?(Dplyr语法很好,但对于我的数据库来说通常太慢了)

假设每个"值"元素对应于"df"中的一列,将相应的列,元素与Map进行比较,将其Reduce到单个logical向量并得到sum

sum(Reduce("&", Map(">", df[columns], values)))

或者复制"值"以获得与数据集列相同的长度,进行比较,获取逻辑matrixrowSums,检查它是否等于"列"的length并获取逻辑vectorsum

sum(rowSums(df[columns] > rep(values, each = length(columns))) == length(columns))

最新更新