Duplicata possible:
R - Comment convertir un facteur en un entier\numérique dans R sans perte d'information
Le fait suivant concernant la fonction as.numeric () a été porté à mon attention
> blah<-c("4","8","10","15")
> blah
[1] "4" "8" "10" "15"
> blah.new<-as.factor(blah)
> blah.new
[1] 4 8 10 15
Levels: 10 15 4 8
> blah.new1<-as.numeric(blah.new)
> blah.new1
[1] 3 4 1 2
Lorsque je convertis un facteur de niveaux 4, 8, 10 et 15 en une variable quantitative en utilisant as.numeric (), chaque nombre est converti en classement et les valeurs d'origine sont perdues.
Comment prendre le vecteur 'blah.new' qui a les niveaux 10,15, 4 et 8 et le convertir en valeurs numériques 10, 15, 4 et 8?
(Ce problème est survenu à cause d'un ensemble de données où une variable quantitative est lue par read.table () pour être un facteur)
Merci!!!!
***** Mise à jour: FIGURED IT OUT ******
blah.new1<-as.numeric(as.character(blah.new))
Cependant, je me demande où, dans la documentation de as.numeric (), est-il dit que cette fonction convertit les arguments en une liste de classements?
Tout d'abord, le facteur se compose d'indices et de niveaux. Ce fait est très très important lorsque vous êtes aux prises avec un facteur.
Par exemple,
> z <- factor(letters[c(3, 2, 3, 4)])
# human-friendly display, but internal structure is invisible
> z
[1] c b c d
Levels: b c d
# internal structure of factor
> unclass(z)
[1] 2 1 2 3
attr(,"levels")
[1] "b" "c" "d"
ici, z
a 4 éléments.
Le index est 2, 1, 2, 3
dans cet ordre.
Le nivea est associé à chaque indice: 1 -> b, 2 -> c, 3 -> d.
Ensuite, as.numeric
convertit simplement la partie index du facteur en numérique.as.character
gère l'index et les niveaux, et génère un vecteur de caractères exprimé par son nivea.
?as.numeric
indique que Les facteurs sont gérés par la méthode par défaut .