> > > 2d I can't manage to deal with factors, so when I have some, I
> transform
> > > them in vectors (with levels()), but I think I miss the power and
> utility
> > of
> > > the factor type ?
> >
> > levels() is not the conversion you want.


in fact I use
'as.numeric(levels(f))[f]'
(from the ?factor description)

That lists all the levels, but
> > it doesn't tell you how they correspond to individual observations. For
> > example,
> >
> > > df <- data.frame(x=1:3, y=c('a','b','a'))
> > > df
> > x y
> > 1 1 a
> > 2 2 b
> > 3 3 a
> > > levels(df$y)
> > [1] "a" "b"
> >
> > If you need to convert back to character values, use as.character():
> >
> > > as.character(df$y)
> > [1] "a" "b" "a"


got it.


> > 1. You can't compare the levels of a factor unless you declared it to
> > be ordered:
> >
> > > df$y[1] > df$y[2]
> > [1] NA
> > Warning message:
> > > not meaningful for factors in: Ops.factor(df$y[1], df$y[2])
> >
> > but
> >
> > > df$y <- ordered(df$y)
> > > df$y[1] > df$y[2]
> > [1] FALSE
> >
> > However, you need to watch out here: the comparison is done by the order
> > of the factors


I am sorry I don't understand this.
here you compare the position of a in the factor and the position of b in
the factor ?

, not an alphabetic comparison of their names:
> >
> > > levels(df$y) <- c("before", "after")
> > > df
> > x y
> > 1 1 before
> > 2 2 after
> > 3 3 before
> > > df$y[1] > df$y[2]
> > [1] FALSE


best regards,

florence.

	[[alternative HTML version deleted]]


