Me gustaría convertir una variable de factor en una numérica, pero as.numeric
no tiene el efecto que esperaba.
A continuación obtengo estadísticas de resumen para la versión numérica de la variable basada en la variable original. Los medios siguen contando por 1 ... ¿tal vez (especula) que los niveles del factor tienen nombres y números, y espero que el valor de la nueva variable provenga del nombre cuando as.numeric
está diseñado para usar el número?
> 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
fuente
fuente
Respuestas:
Eso es correcto:
as.numeric(factor)
devuelve el número que R asigna al nivel de ese factor. Tu podrías intentaras.numeric(as.character(factor))
fuente
as.numeric(levels(f))[f]
y un poco más eficiente queas.numeric(as.character(f))
Esta es la pregunta frecuente 7.10 en las preguntas frecuentes de R. Sí, un factor se almacena como los enteros del 1 al número de niveles y as.numeric proporciona los códigos subyacentes. Las preguntas frecuentes ofrecen 2 formas de convertir a numérico.
Sin embargo, por lo general esto se debe a que cuando leía los datos había algo en sus datos que hizo que R lo tratara como un factor en lugar de números (a menudo un carácter no numérico parásito). A menudo es mejor corregir los datos sin procesar (la conversión convertirá la pieza no numérica a NA) o usar el argumento colClasses si se usa read.table o similar.
fuente