2015-01-18 10 views
8

plyr::mapvalues possono essere utilizzati in questo modo:Uso plyr :: mapvalues ​​con dplyr

mapvalues(mtcars$cyl, c(4, 6, 8), c("a", "b", "c")) 

Ma questo non funziona:

mtcars %>% 
dplyr::select(cyl) %>% 
mapvalues(c(4, 6, 8), c("a", "b", "c")) %>% 
as.data.frame() 

Come posso usare plyr::mapvalues con dplyr? O ancora meglio, qual è l'equivalente dplyr?

+1

Prova 'mtcars%>% selezionare (cil)%>%. $ Cil%>% plyr :: mapvalues ​​(c (4,6,8), c ('a', 'b', 'c'))%>% as.data.frame() ' – akrun

+4

Oppure' mtcars%>% mutate (x = mapvalues ​​(cyl, c (4, 6, 8), c ("a", "b", "c")))%>% select (x) ' –

+0

Che funziona. Cosa significa '. $ Cyl'? – luciano

risposta

8

Per usarlo e restituire un data.frame una colonna:

mtcars %>% 
    transmute(cyl = plyr::mapvalues(cyl, c(4, 6, 8), c("a", "b", "c"))) 

Oppure, se volete una singola uscita vettore, come nel tuo esempio di lavoro, utilizzare pull:

mtcars %>% 
    pull(cyl) %>% 
    plyr::mapvalues(., c(4, 6, 8), c("a", "b", "c")) 

Se si utilizza sia dplyr e plyr contemporaneamente, vedere questa nota dal dplyr readme:

avrete bisogno di essere un po 'di attenzione se carichi sia plyr che dplyr allo allo stesso tempo. Consiglierei di caricare prima plyr, poi dplyr, in modo che le funzioni dplyr più veloci vengano prima nel percorso di ricerca. Con e grande, qualsiasi funzione fornita da dplyr e plyr funziona in modo simile a , anche se le funzioni di dplyr tendono ad essere più veloci e più generali.

Anche se nota che è possibile chiamare mapvalues usando plyr::mapvalues se dplyr viene caricato senza la necessità di caricare plyr.

Problemi correlati