R: Erstellen einer kategorialen Variablen aus einer numerischen Variablen und benutzerdefinierten / endlosen / einwertigen Intervallen

Ich versuche oft, eine kategoriale Variable aus einer numerischen Variable und einer benutzerdefinierten Menge von Bereichen zu erstellen.

Sagen Sie zum Beispiel, ich habe ein data.frame mit einer numerischen Variablendf$V und möchte eine neue Variable erstellendf$VCAT so dass

df$VCAT = 0 wenndf$V ist gleich 0df$VCAT = 1 wenndf$V liegt zwischen 0 und 10 (d. h. (0,10))df$VCAT = 2 istdf$V ist gleich 10 (d. h. [10,10])df$VCAT = 3 istdf$V liegt zwischen 10 und 20 (d. h. (10,20))df$VCAT = 4 istdf$V ist größer oder gleich 20 (d. h. [20, Inf])

Ich mache das gerade, indem ich die "Scoring-Funktion" selbst fest programmiere, indem ich etwas mache wie:

df = data.frame(V = seq(1,100))
df = df %>% mutate(VCAT = (V>0) + (V==10) + 2*(V>10) + (V>=20))

Ich frage mich, ob es einen einfacheren Weg gibt, dies in R zu tun, vorzugsweise mitdplyr (damit ich Befehle verketten kann). Im Idealfall suche ich eine kurze Funktion, die in @ verwendet werden kamutate das wird in der Variablen nehmenV und ein Vektor, der die Bereiche beschreibt, wie zBbuckets. Beachten Sie, dassbuckets kann hier möglicherweise nicht optimal beschrieben werden, da mir nicht klar ist, wie Benutzer die Endpunkte der Bereiche anpassen können.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage