Spesso mi trovo a provare a creare una variabile categoriale da una variabile numerica + un insieme di intervalli fornito dall'utente.R: creazione di una variabile categoriale da una variabile numerica e intervalli personalizzati/aperti/a valore singolo
Ad esempio, dire che ho un data.frame con una variabile numerica df$V
e vorrebbe creare una nuova variabile df$VCAT
tale che:
df$VCAT
= 0 sedf$V
è uguale a 0df$VCAT
= 1 sedf$V
è compreso tra 0 e 10 (cioè (0,10))df$VCAT
= 2 èdf$V
è pari a 10 (cioè [10,10])df$VCAT
= 3 èdf$V
è compreso tra 10 e 20 (ad es. (10,20))df$VCAT
= 4 èdf$V
è maggiore o uguale a oltre il 20 (cioè [20, Inf])
Attualmente sto facendo questo difficile codifica la "funzione di scoring" me stesso fare qualcosa di simile:
df = data.frame(V = seq(1,100))
df = df %>% mutate(VCAT = (V>0) + (V==10) + 2*(V>10) (V>=20))`
mi chiedo se c'è un modo hacky più facile farlo in R, preferibilmente utilizzando dplyr
(in modo che possa comandi a catena). Idealmente, sto cercando una funzione breve che possa essere utilizzata in mutate
che includa la variabile V
e un vettore che descrive gli intervalli come buckets
. Nota che buckets
potrebbe non essere descritto nel modo migliore in quanto non mi è chiaro come consentirebbe agli utenti di personalizzare gli endpoint degli intervalli.
Sai di 'cut()'? Controlla '? Cut' o forse anche' Hmisc :: cut2() '. – JasonAizkalns
Vuoi che la tua funzione acquisisca un vettore più 'bucket' e restituisca un frame di dati che assomiglia al risultato di quanto sopra? O vuoi una funzione che prende un vettore e 'bucket' che possono essere passati a 'mutate'? – jamieRowen
@jamieRowen preferibilmente qualcosa che potrebbe essere passato a 'mutare'. –