使用多重和可变过滤器计数数据

时间:2019-02-19 18:20:31

标签: r filter

我有一个包含多列的数据框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的语法很好,但是我的数据库通常太慢了)

1 个答案:

答案 0 :(得分:3)

假设每个“值”元素对应于“ df”中的一列,则将具有MapReduce的对应列元素与单个logical向量进行比较并获得sum

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

或复制“值”以获取与数据集列相同的长度,进行比较,获取逻辑rowSums的{​​{1}},检查其是否等于{{1 }}的“列”,并获得逻辑matrix的{​​{1}}

length