Ich stimme mit Joshua, dass ist, was die meisten Menschen für diese Aufgabe denken würde. Ich mag die Standardwerte nicht, bevorzuge Links-Geschlossen-Intervalle, und es ist ein kleiner Schmerz, das richtig einzustellen mit (obwohl es gemacht werden kann. Zum Glück für mein schwaches Gehirn hat Frank Harrell eine cut2
Funktion in sein Hmisc-Paket, dessen Voreinstellungen ich bevorzuge.Eine dritte Alternative ist die Verwendung von findInterval
, die besonders für Probleme geeignet ist, bei denen Sie das Ergebnis als Index für einen anderen Extraktions- oder Auswahlprozess verwenden möchten.Sie erhalten ungefähr die Ergebnisse, die Sie erhalten würden, wenn Sie as.numeric
anwendeten zu den Ergebnissen der cut
:
require(Hmisc)
cut2(dataset, c(1,4,9,17,23))
[1] [ 4, 9) [ 4, 9) [ 9,17) [ 1, 4) [ 9,17) [ 9,17) [17,23] [17,23] [ 1, 4) [ 9,17)
[11] [ 9,17) [ 9,17) [ 9,17) [17,23] [ 1, 4) [17,23] [ 9,17) [17,23]
(Beachten Sie, dass findInterval
die obere Grenze als das geschlossene Ende verwenden eine zusätzliche Intervall zu bilden, wenn Sie die maximale ersetzen w ith Inf
, ein reserviertes Wort für die Unendlichkeit in R.)
findInterval(dataset, c(c(1,4,9,17,23)))
[1] 2 2 3 1 3 3 4 4 1 3 3 3 3 4 1 5 3 4
as.numeric(cut(dataset, c(1,4,9,17,Inf), include.lowest=TRUE))
[1] 1 2 2 1 3 3 4 4 1 3 3 3 3 4 1 4 3 3
as.numeric(cut(dataset, c(1,4,9,17,23), include.lowest=TRUE))
[1] 1 2 2 1 3 3 4 4 1 3 3 3 3 4 1 4 3 3
Um von 'cut' zu bekommen Variablen Dummy (das ist, was der OP gefragt), versuchen Sie' model.matrix (~ bin-1, data = Datensatz) ' –