[R] value.labels
David Winsemius
dwinsemius at comcast.net
Fri Aug 12 08:55:25 CEST 2011
On Aug 11, 2011, at 10:27 AM, Uwe Ligges wrote:
> On 11.08.2011 19:22, David Winsemius wrote:
>
> Hmm, when you want to add a level without changing the class of the
> factor object, you will have to add the level at first and then
> assign the level to the elements of the object. I'd probably rebuild
> the whole thing in that case.
>
All I wanted to do was construct a "not done" label for the NA's in a
factor created with cut so they would show up in tabulations. I think
the answer to my question is to use `addNA` and then use `levels<-`
to change the NA level to "not done". I suppose RTFM is one way to
answer the question and that was how I figured out what I now know.
Looks like I can use either factor(x, exclude=NULL) or addNA(x.c)
This builds a test factor:
x<-rnorm(100)
is.na(x) <- sample(c(TRUE,FALSE), 100, c(.1,.9) , replace=TRUE)
x.c <- cut(x, seq(-3,3, by=0.5))
# I think these do the same thing:
x.cE <- factor(x, exclude=NULL)
x.cNA <- addNA(x.c)
# Relabel the NA level
levels(x.cNA) <- c(levels(x.c2)[-length(levels(x.c2))], "NotDone")
> table(x.cNA)
x.cNA
(-3,-2.5] (-2.5,-2] (-2,-1.5] (-1.5,-1] (-1,-0.5] (-0.5,0]
(0,0.5] (0.5,1] (1,1.5] (1.5,2]
0 0 3 5 16 17
14 14 15 4
(2,2.5] (2.5,3] NotDone
2 1 9
That seems a bit less baroque than converting to numeric , changing
NA's to 0 and then adjusting the factor labels, although I still want
to move the not-done level so it is first.
x.cN <- factor(x.cNA, levels=c("NotDone", c(levels(x.cNA)[-
length(levels(x.cNA))]))
> table(x.cN)
x.cN
NotDone (-3,-2.5] (-2.5,-2] (-2,-1.5] (-1.5,-1] (-1,-0.5]
(-0.5,0] (0,0.5] (0.5,1] (1,1.5]
9 0 0 3 5 16
17 14 14 15
(1.5,2] (2,2.5] (2.5,3]
4 2 1
> As I understood the question, just how to rename the levels was the
> original question.
Yes, that was how I understood it as well. I was asking what I thought
was a related question.
>
> Uwe
>
>
More information about the R-help
mailing list