我有一个数据框,我想过滤它:
employee <- c('John Doe','Peter Gynn','Jolie Hope', 'Michael')
salary <- c(21000, 23400, 26800, 25000)
number <- c(1,2,3,5)
df <- data.frame(employee,salary,number)
> df
employee salary number
1 John Doe 21000 1
2 Peter Gynn 23400 2
3 Jolie Hope 26800 3
4 Michael 25000 5
我也有这些向量:
vectorMin <- c(22000,1.5)
vectorMax <- c(26000,4.5)
我想用薪水介于22000和26000之间且数字介于1.5和4.5之间的行过滤数据框。在这种情况下,我只需要Peter Gynn的数据框。我努力了:
(df >= vectorMin) & (df <= vectorMax)
但这行不通。我该怎么做?
您可以用来Map
对vector / list元素执行一对一的操作。然后,我们可以将结果与相结合Reduce
。首先,我们定义一个函数between
(针对问题的特定需求编写-包括范围),该函数返回相关范围内值的逻辑向量。您也可以在中使用匿名函数Map
。
between <- function(x, min, max) x >= min & x <= max
df[Reduce("&", Map(between, df[-1], vectorMin, vectorMax)), ]
# employee salary number
# 2 Peter Gynn 23400 2
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句