2017-03-01 3 views
-2

Ich versuche eine Funktion zu erstellen, mit der ich meine df dynamisch filtern kann; B. Bedingungen nur an einen Teil der Spalten von df zu legen, verschiedene Schwellenwerte jedes Mal einzustellen usw.Dynamische Funktion für mehrere Filterbedingungen

Hier ist ein Beispiel. Angenommen, das ist, wie mein df aussieht:

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

Also, wenn ich 2 verschiedene Filter über meine df aufzwingen wollen, ich brauche zwei Zeilen schreiben:

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

Jetzt gehe ich davon haben a df mit vielen Spalten. Ich suche nach etwas, das es mir erlauben wird, die ganze Zeile immer wieder zu schreiben (mit verschiedenen Auswahlen); zum Beispiel so etwas wie die (my_selection ist eine Funktion):

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

Ihre Hilfe geschätzt wird.

+0

Vielleicht sind Sie für 'subset' suchen? –

+0

@docendodiscimus Wie kann ich "Teilmenge" auf dynamische Weise verwenden? Ich möchte diese Funktion einmal mit den Bedingungen auf 'col1' und' col2' aufrufen können und zu anderen Zeiten mit 'col2' und' col3' (etc ...) – staove7

+0

Es ist mir unklar, was Sie mit dem Aufruf einer Funktion meinen auf dynamische Weise. Bisher sehe ich nur, dass Sie einen data.frame mit 3 verschiedenen Bedingungen unterteilen möchten. Wie würden diese dynamischen Aufrufe aussehen? –

Antwort

0

ich glaube, Sie die interaktive Funktion auf, dass man verwenden könnte:

Hier ist ein Beispiel mit einer anderen Datenmenge:

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") 
Verwandte Themen