factor to numeric in data.frame
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.
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