[R] How to convert factors to numbers

Uwe Ligges ligges at statistik.tu-dortmund.de
Fri Mar 23 19:56:29 CET 2012



On 23.03.2012 15:31, chuck.01 wrote:
> Using your posed data, the variable price was numeric:
>
> data.precios<-
> read.table("http://r.789695.n4.nabble.com/file/n4498828/p_diarios.txt",
> header=T)
>
> str(data.precios)
> 'data.frame':	1996 obs. of  2 variables:
>   $ time : int  37988 37991 37993 37994 37995 37998 37999 38000 38001 38002
> ...
>   $ price: num  18.1 26.1 30.9 34.7 27.6 ...
>
>
> HOWEVER!
> If I follow your code (eg. using " read.table(... , dec=",", sep="\t")":
>
>   data.precios<-
> read.table("http://r.789695.n4.nabble.com/file/n4498828/p_diarios.txt",
> header =TRUE , dec=",", sep="\t")
>> str(data.precios)
> 'data.frame':	1996 obs. of  2 variables:
>   $ time : int  37988 37991 37993 37994 37995 37998 37999 38000 38001 38002
> ...
>   $ price: Factor w/ 1639 levels "10.80","12.53",..: 12 126 213 342 160 186
> 219 37 54 69 ...
>
> It is a factor.... but I can change it like this:
>
>> Price<- as.numeric(data.precios$price)

Never ever! It will convertwed to the intergers representing the former 
factors. You probbaly want as.numeric(as.character(...)) and have to 
look why R has not read it as a numeric right away.

Uwe Ligges





>> str(lPrice)
>   num [1:1996] 12 126 213 342 160 186 219 37 54 69 ...
>
>
> I think avoiding it ever becoming a factor would be the better path.
> Good luck.
>
>
>
>
>
> sandro wrote
>>
>> Hello, I am relatively new to using R.
>>
>> The text file contains the date and price .  I want to read and manipulate
>> the data in R.  However, when I use read.table, it treats all of the data
>> as "factors" and I do not know how to treat the data as numbers:
>>
>>   http://r.789695.n4.nabble.com/file/n4498828/p_diarios.txt p_diarios.txt
>>
>> setwd ("C:\\Users\\Sandro\\Dropbox\\R")
>> data.precios<- read.table ("p_diarios.txt ", header =TRUE
>> , dec=",", sep="\t")
>> Time<- data.precios$time # 01.02.2004 - 12.05.2011
>> Price<- data.precios$price # Historical spot price
>> log.Price<- log(data.precios$price)
>> Error en Math.factor(c(12L, 126L, 213L, 342L, 160L, 186L, 219L, 37L, 54L,
>> :
>>    log not meaningful for factors
>>
>> As you can see, I cannot calculate the price logarithms.
>>
>> Any help is appreciated.
>>
>> Sandro
>>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/How-to-convert-factors-to-numbers-tp4498828p4499019.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list