我有一个包含多列的数据框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的语法很好,但是我的数据库通常太慢了)
答案 0 :(得分:3)
假设每个“值”元素对应于“ df”中的一列,则将具有Map
,Reduce
的对应列元素与单个logical
向量进行比较并获得sum
sum(Reduce("&", Map(">", df[columns], values)))
或复制“值”以获取与数据集列相同的长度,进行比较,获取逻辑rowSums
的{{1}},检查其是否等于{{1 }}的“列”,并获得逻辑matrix
的{{1}}
length