[R] factor to numeric in data.frame

Heinz Tuechler tuechler at gmx.at
Sat Apr 2 14:43:13 CEST 2005


At 14:26 02.04.2005 +0100, Prof Brian Ripley wrote:
>On Sat, 2 Apr 2005, Heinz Tuechler wrote:
>
>> Dear All,
>>
>> Assume I have a data.frame that contains also factors and I would like to
>> get another data.frame containing the factors as numeric vectors, to apply
>> functions like sapply(..., median) on them.
>> I read the warning concerning as.numeric or unclass, but in my case this
>> makes sense, because the factor levels are properly ordered.
>> I can do it, if I write for each single column "unclass(...), but I would
>> like to use indexing, e.g. unclass(df[1:10]).
>> Is that possible?
>
>Yes: unclass is applied to a column and not the data frame.
>
>newdf <- df
>newdf[1:10] <- lapply(newdf[1:10], unclass)
>
>BTW, please read the posting guide, and do not say `does not work' when it 
>patently does work as documented.
>

Thank you for your answer. I am sorry for the unprecise formulation `does
not work'. I intended `does not solve my problem'.
In the meantime Gabor Grothendieck responded with:
'Try this: data.matrix(df.f12)'
which is exactly, what I was searching for.

Many thanks,
Heinz Tüchler


>> Thanks,
>> Heinz Tüchler
>>
>> ## Example:
>> f1 <- factor(c(rep('c1-low',2),rep('c2-med',5),rep('c3-high',3)))
>> f2 <- factor(c(rep('c1-low',5),rep('c2-low',3),rep('c3-low',2)))
>> df.f12 <- data.frame(f1,f2) # data.frame containing factors
>>
>> ## this does work
>> df.f12.num <- data.frame(unclass(df.f12[[1]]),unclass(df.f12[[2]]))
>> df.f12.num
>> ## this does not work
>> df.f12.num <- data.frame(unclass(df.f12[[1:2]]))
>
>Yes, it does work.  What do you think [[1:2]] does?   Please RTFM.
>
>> ## this does not work
>> df.f12.num <- data.frame(unclass(df.f12[1:2]))
>> df.f12.num
>
>That also works: unclassing a data frame gives a list.
>
>-- 
>Brian D. Ripley,                  ripley at stats.ox.ac.uk
>Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
>University of Oxford,             Tel:  +44 1865 272861 (self)
>1 South Parks Road,                     +44 1865 272866 (PA)
>Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list