Ich möchte eine Faktorvariable in eine numerische konvertieren, habe as.numeric
aber nicht den erwarteten Effekt.
Unten erhalte ich zusammenfassende Statistiken für die numerische Version der Variablen basierend auf der ursprünglichen Variablen. Die Mittel zählen weiter um 1 hoch ... vielleicht (er spekuliert) haben die Ebenen des Faktors sowohl Namen als auch Zahlen, und ich erwarte, dass der Wert der neuen Variablen aus dem Namen stammt, wenn as.numeric
die Zahl verwendet werden soll?
> describe.by(as.numeric(df$sch), df$sch)
group:
var n mean sd median trimmed mad min max range skew kurtosis se
1 1 5389 1 0 1 1 0 1 1 0 NaN NaN 0
---------------------------------------------------------
group: 001
var n mean sd median trimmed mad min max range skew kurtosis se
1 1 19 2 0 2 2 0 2 2 0 NaN NaN 0
---------------------------------------------------------
group: 002
var n mean sd median trimmed mad min max range skew kurtosis se
1 1 54 3 0 3 3 0 3 3 0 NaN NaN 0
---------------------------------------------------------
r
data-transformation
Michael Bishop
quelle
quelle
Antworten:
Das ist richtig:
as.numeric(factor)
Gibt die Zahl zurück, die R der Ebene dieses Faktors zuweist. Du könntest es versuchenas.numeric(as.character(factor))
quelle
as.numeric(levels(f))[f]
empfohlen und ist etwas effizienter alsas.numeric(as.character(f))
Dies ist FAQ 7.10 in den R Häufig gestellten Fragen. Ja, ein Faktor wird als Ganzzahl von 1 bis zur Anzahl der Ebenen gespeichert, und as.numeric gibt die zugrunde liegenden Codes an. Die FAQ bietet zwei Möglichkeiten zur Konvertierung in numerische Zahlen.
Dies liegt jedoch normalerweise daran, dass beim Einlesen der Daten etwas an Ihren Daten dazu führte, dass R sie als Faktor anstelle von Zahlen behandelte (häufig ein nicht numerisches Streuzeichen). Oft ist es besser, die Rohdaten zu korrigieren (die Konvertierung konvertiert das nicht numerische Stück in NA) oder das Argument colClasses zu verwenden, wenn read.table oder ähnliches verwendet wird.
quelle