Possible Duplicate:
R – How to convert a factor to an integer\numeric in R without a loss of information
The following fact about the as.numeric() function has been brought to my 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
When I convert a factor with levels 4, 8, 10, and 15 to a quantitative variable using as.numeric(), every number is converted to a ranking, and the original values are lost.
How do I take the vector ‘blah.new’ that has levels 10,15, 4, and 8, and convert it to the numeric values 10, 15, 4, and 8?
(This issue has arisen because of a dataset where a quantitative variable is read by read.table() to be a factor)
Thank you!!!!
*****Update: FIGURED IT OUT******
blah.new1<-as.numeric(as.character(blah.new))
However, I am wondering where in documentation for as.numeric() does it say that this function converts arguments into a list of rankings?
First, factor consists of indices and levels. This fact is very very important when you are struggling with factor.
For example,
here,
zhas 4 elements.The index is
2, 1, 2, 3in that order.The level is associated with each index: 1 -> b, 2 -> c, 3 -> d.
Then,
as.numericconverts simply the index part of factor into numeric.as.characterhandles the index and levels, and generates character vector expressed by its level.?as.numericsays that Factors are handled by the default method.