2017-10-24 4 views
1

Ich versuche, die Ergebnisse jeder Gruppe zurückzugeben. Was ist der richtige Weg, um jede Gruppe in eine neue Funktion zu überführen?Ergebnisse nach Gruppe in dplyr zurückgeben

res<-data.frame(ballot1.y=c(1,2,1,2),ans=c(3,5,4,6))%>%group_by(ballot1.y)%>%mutate(res=head(myfunc(.))) 

myfunc<-function(vals){ 
    paste0(vals) 
} 

GOAL

GROUP RES 
1  3,4 
2  5,6 

Antwort

3

Wir brauchen summarise statt mutate und paste0 ist auch nicht die gewünschte Ausgabe zu tun. Wir müssen collapse

myfunc<-function(vals){ 
    paste(vals, collapse=",") 
} 

data.frame(ballot1.y=c(1,2,1,2),ans=c(3,5,4,6))%>% 
    group_by(ballot1.y) %>% 
    summarise(res =myfunc(ans)) 
# A tibble: 2 x 2 
# ballot1.y res 
#  <dbl> <chr> 
#1   1 3,4 
#2   2 5,6 

Eine praktische Funktion toString ist die paste(., collapse=", ") ist

Verwandte Themen