2017-03-01 51 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")