Gostaria de converter uma variável de fator em uma numérica, mas as.numeric
não tem o efeito esperado.
Abaixo, obtenho estatísticas resumidas da versão numérica da variável com base na variável original. Os meios continuam contando em 1 ... talvez (ele especula) os níveis do fator tenham nomes e números, e eu estou esperando que o valor da nova variável venha do nome quando as.numeric
é projetado para usar o 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
fonte
fonte
Respostas:
Isso está correto:
as.numeric(factor)
retorna o número que R atribui ao nível desse fator. Você poderia tentaras.numeric(as.character(factor))
fonte
as.numeric(levels(f))[f]
é recomendado e um pouco mais eficiente queas.numeric(as.character(f))
Esta é a FAQ 7.10 nas Perguntas mais frequentes sobre R. Sim, um fator é armazenado como números inteiros de 1 ao número de níveis e as.numeric fornece os códigos subjacentes. O FAQ fornece duas maneiras de converter para numérico.
No entanto, geralmente isso ocorre porque, quando você lê os dados, havia algo nos seus dados que fazia com que o R os tratasse como um fator em vez de números (geralmente um caractere não numérico perdido). Geralmente, é melhor corrigir os dados brutos (a conversão converterá a parte não numérica em NA) ou usar o argumento colClasses se estiver usando read.table ou similar.
fonte