2015-12-28 9 views
5

Sto lavorando con R shiny per alcune analisi esplorative dei dati. Ho due input di checkbox, in una checkbox sto popolando tutte le variabili categoriali e in altre tutte sono variabili numeriche. Quindi sto applicando groupby su queste due selezioni come segue.dplyr group by su più colonne

var1 <- input$variable1  # Checkbox with categorical variables 
var2 <- input$variable2  # Checkbox with numerical variables 

v$data <- dataset %>% 
    group_by_(var1) %>% 
    summarize_(Sum = interp(~sum(x), x = as.name(var2))) %>% 
    arrange(desc(Sum)) 

che funziona perfettamente bene quando c'è groupby solo su 1 colonna, ma, voglio groupby su più di una colonna. Quando l'utente seleziona più di una variabile categoriale, mi restituisce un array con i nomi delle colonne. Come passare questo in dplyr groupby.

+0

Ho 11 variabili categoriali Quando l'utente seleziona diciamo 3 variabili categoriali mi dà '[1] "dish_name" "dish_type" [3] "user_location_grp"' in 'var1' come faccio passare questo array a groupby. – Neil

risposta

14

Se si dispone di un vettore di nomi di variabili, è necessario passare al parametro .dots= di group_by_. Per esempio:

mtcars %>% 
    group_by_(.dots=c("mpg","hp","wt")) %>% 
    summarize(x=mean(gear)) 
+0

Questo ha funzionato anche usando 'group_by'. – BLT