I\'m having a big trouble on dealing with levels names of a data frame.
I have a big data frame in which one of the colums is a factor with a LOT of levels.
Call make.names
with unique = TRUE
on your column.
df$col_foo <- factor(make.names(df$col_foo, unique = TRUE))
If you want all the entries to be unique then a factor does not gain you much over just using a character variable.
Probably the simplest way to do what you want is to coerce to a character vector, use the duplicated
function to find the duplicates and paste something onto the end of them, then if you want use factor
to recoerce it back to a factor. Possibly something like:
df$col_foo <- factor( ifelse( duplicated(df$col_fo),
paste(df$col_foo, '_x', sep=''), as.character(df$col_foo)))
You can edit the levels of the factor variable:
levels(df$col_foo) <- c(levels(df$col_foo),"bar2_X","bar3_X")
and then change the repeated levels to one of the new levels you added.