Jeff Brown wrote:
> Sorry for spamming.  I swear I had worked on that problem a long time before
> posting.  
> 
> But I just figured it out: I have to change the values, which are
> represented as integers, not strings.  So the following code will do it:
> 
> df <- data.frame (
>       a = factor( c( "bob", "alice", "bob" ) ),
>       b = factor( c( "kenny", "alice", "alice" ) )
> );
> allLevels <- unique( c( levels( df$a ), levels( df$b ) ) )
> for (c in colnames(df)) {
>       df[,c] <- match( df[,c], allLevels);
>       levels( df[,c] ) <- 1:(length(allLevels))
> };
> 

Hmm, I think I'd go for something like

allLevels <- unique(unlist(lapply(df,levels)))
df[] <- lapply(df, factor,
levels=allLevels, labels=seq_along(allLevels))


-- 
Peter Dalgaard
Center for Statistics, Copenhagen Business School
Phone: (+45)38153501
Email: pd....@cbs.dk  Priv: pda...@gmail.com

______________________________________________
R-help@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.

Reply via email to