2014-04-18 25 views
5

Desidero classificare una variabile numerica nel mio oggetto data.frame con l'uso di dplyr (e non ho idea di come farlo).R dplyr - categorizza la variabile numerica con mutante

Senza dplyr, avrei probabilmente fare qualcosa di simile:

df <- data.frame(a = rnorm(1e3), b = rnorm(1e3)) 
df$a <- cut(df$a , breaks=quantile(df$a, probs = seq(0, 1, 0.2))) 

e sarebbe fatto. Tuttavia, preferisco fortemente farlo con la funzione dplyr (mutate, suppongo) nella sequenza chain di altre azioni che eseguo sul mio data.frame.

+1

A occhio e croce (da google e leggere il manuale in linea, non ho mai usato 'dplyr') direi' mutare (df, a = taglio (un , pause = quantile (a, probs = seq (0, 1, 0.2)))) ... –

+0

No =) 'df%.% mutate (df, a = cut (a, pause = quantile (a, probs = seq (0,1,0.2)))) 'restituisce' Errore: tipo non supportato per la colonna 'df' (VECSXP, classes = data.frame) ' –

+0

Mea culpa! Di fretta, ho dimenticato di rimuovere 'df' nel' mutate' mentre uso '%.%' 'Sequenza chain' ... Le mie scuse e grazie! –

risposta

13
set.seed(123) 
df <- data.frame(a = rnorm(10), b = rnorm(10)) 

df %>% mutate(a = cut(a, breaks = quantile(a, probs = seq(0, 1, 0.2)))) 

dando:

    a   b 
1 (-0.586,-0.316] 1.2240818 
2 (-0.316,0.094] 0.3598138 
3  (0.68,1.72] 0.4007715 
4 (-0.316,0.094] 0.1106827 
5  (0.094,0.68] -0.5558411 
6  (0.68,1.72] 1.7869131 
7  (0.094,0.68] 0.4978505 
8    <NA> -1.9666172 
9 (-1.27,-0.586] 0.7013559 
10 (-0.586,-0.316] -0.4727914 
+0

Qual è il vantaggio 'dplyr' di fare' df%.% Mutate (a = ...) 'su' df <- mutate (df, a = ...) '. Cambia per riferimento al primo modo? –

+0

Se intendi qual è la differenza tra 'df%.% Mutate (a = ...)' e 'mutate (df, a = ...)' è solo un problema di stile ma il primo sembra essere il preferito . –

+1

Migliora la leggibilità mentre si eseguono serie di azioni su un 'data.farme' - invece di utilizzare funzioni annidate, è possibile scriverle in sequenza con l'uso di'%.% 'E - quindi - leggere il codice in un * from- da sinistra a destra * (non: * from-inside-to-outside *). Maggiori informazioni qui: http://blog.rstudio.org/2014/01/17/introducing-dplyr/ –

Problemi correlati