2016-05-25 11 views
-1

Ich habe diese Arbeit und muss es tun, indem Sie nur var1 und var2 ändern. Also, ich möchte Funktion schaffen, aber ich konnte nicht. Kannst du mit dieser einfachen Arbeit funktionieren?create function with dplyr

a12 = data %>% group_by(var1,var2)%>% tally 
a12_1 <- data %>% group_by(var1) %>% tally 
a12_2 = merge(a12,a12_1,by="var1") 
a12_2$perc = a12_2[,3]/a12_2[,4] 

Die Herausforderung für mich ist, wie man mit diesem Argument beim Erstellen von Funktionen umgehen.

a_fun <- function(data,var1,var2) 
+4

Vielleicht möchten Eingang zeigen, gewünschte Ausgabe und Worten zur Erläuterung ihrer Verbindung. – Frank

Antwort

2

Ich vermute, Sie mit dem Nicht-Standard-Auswertung zu kämpfen haben, wenn Sie _ den dplyr Funktionen anhängen Sie Strings als Argumente übergeben können. Ich habe es nicht getestet, aber man könnte versuchen:

a_fun <- function(data, var1, var2) { 
    a12 <- data %>% group_by_(var1, var2) %>% tally() 
    a12_1 <- data %>% group_by_(var1) %>% tally() 
    a12_2 <- merge(a12, a12_1, by = var1) 
    a12_2$perc <- a12_2[, 3]/a12_2[, 4] 
    return(a12_2) 
} 

beispiels

a_fun(data, "col1", "col2")