2017-03-01 52 views
-2

我试图创建一个函数,它允许我以动态方式过滤我的df;例如,对我的df的列中的一部分施加条件,每次设置不同的阈值等。用于多个过滤条件的动态函数

这里是一个例子。假设这是我df看起来像:

col1 col2 col3 
TRUE 0.2 0.5 
TRUE 0.3 0.7 
FALSE 0.7 1.5 

所以,如果我想在我的df实行2个不同的过滤器,我需要写两行:

df[df$col1 == TRUE & df$col2 > 0.5] 
df[df$col2 < 0.3 & df$col3 > 0.6] 

现在假设我有有很多列的df。我正在寻找一些能够让我避免一遍又一遍地写完整行(有不同选择)的东西;例如,类似的东西(my_selection是一个函数):

my_selection (data = df, col1, ==, TRUE, col2, >, 0.5) 
my_selection (data = df, col2, <, 0.3, col3, >, 0.6) 

您的帮助将不胜感激。

+0

也许你正在寻找'subset'? –

+0

@docendodiscimus如何以动态方式使用'subset'?我希望能够使用'col1'和'col2'的条件调用这个函数一次,而另一次使用'col2'和'col3'(etc ...) – staove7

+0

我不清楚你的意思是调用一个函数以动态的方式。到目前为止,我只看到你想使用3种不同的条件来对数据框进行子集化。那些动态调用是什么样子的? –

回答

0

我想你可以使用互动功能上一个:

这里的另一个数据集的例子:

employee <- c('John Doe','Peter Gynn','Jolie Hope') 
salary <- c(21000, 23400, 26800) 
startdate <- as.Date(c('2010-11-1','2008-3-25','2007-3-14')) 
employ.data <- data.frame(employee, salary, startdate) 


employee_sel<- select.list(unique(employee), graphics = TRUE, multiple = TRUE, title = "Select one or more") 
salary_sel<- select.list(as.character(unique(salary)), graphics = TRUE, multiple = TRUE, title = "Select one or more") 
employ_sel<- select.list(as.character(unique(startdate)), graphics = TRUE, multiple = TRUE, title = "Select one or more")