[R] value.labels

Daniel Nordlund djnordlund at frontier.com
Fri Aug 12 02:52:22 CEST 2011


> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
> On Behalf Of Rolf Turner
> Sent: Thursday, August 11, 2011 5:24 PM
> To: Heinz Tuechler
> Cc: Zeki Çatav; r-help at r-project.org; Uwe Ligges
> Subject: Re: [R] value.labels
> 
> On 12/08/11 12:53, Heinz Tuechler wrote:
> > At 12.08.2011 11:05 +1200, Rolf Turner wrote:
> >> On 12/08/11 11:34, Heinz Tuechler wrote:
> >>> At 12.08.2011 09:11 +1200, Rolf Turner wrote:
> >>>> On 12/08/11 09:59, Heinz Tuechler wrote:
> >>>>> At 11.08.2011 21:50 +0300, Zeki Çatav wrote:
> >>>>>> Prş, 2011-08-11 tarihinde 19:27 +0200 saatinde, Uwe Ligges yazdı:
> >>>>>> >
> >>>>>> > On 11.08.2011 19:22, David Winsemius wrote:
> >>>>>> > >
> >>>>>> > > On Aug 11, 2011, at 11:42 AM, Uwe Ligges wrote:
> >>>>>> > >
> >>>>>> > >>
> >>>>>> > >>
> >>>>>> > >> On 11.08.2011 16:10, zcatav wrote:
> >>>>>> > >>> Hello R people,
> >>>>>> > >>>
> >>>>>> > >>> I have a "data.frame". Status variable has 3 values. 0-
> >alive,
> >>>>>> > >>> 1->dead and
> >>>>>> > >>> 2->missed..........................
> >>>>>> > .........................................
> >>>>>> > As I understood the question, just how to rename the levels was
> >>>>>> the
> >>>>>> > original question.
> >>>>>> >
> >>>>>> > Uwe
> >>>>>>
> >>>>>> I don't want to rename levels or converting from numeric to
> >>>>>> string. I
> >>>>>> want to add each corresponding levels value, a label, as in SPSS.
> >>>>>> Level 0 labeled with alive,
> >>>>>> level 1 labeled with dead and
> >>>>>> level 2 labeled with missed.
> >>>>>
> >>>>> This is not possible with a factor, because factor levels can only
> >>>>> be positive integers.
> >>>>
> >>>> That is just plain (ridiculously) wrong. RTFM.
> >>>>
> >>>> cheers,
> >>>>
> >>>> Rolf Turner
> >>>
> >>> So, how would you construct a factor with levels 0, 1, 2 and labels
> >>> alive, dead, and missed, as the original post asked for?
> >>>
> >>> Heinz
> >>
> >> As I said, RTFM. But for completeness:
> >>
> >> x <- sample(0:2,100,TRUE)
> >> y <- factor(x,labels=c("alive","dead","missed"))
> >>
> >> Duhhh.
> >>
> >> cheers,
> >>
> >> Rolf Turner
> >
> > Maybe you would like to look at the structure.
> >
> > str(y)
> > Factor w/ 3 levels "alive","dead",..: 3 1 2 2 3 3 2 1 1 1 ...
> >
> > or
> >
> > dput(y)
> > structure(c(3L, 1L, 2L, 2L, 3L, 3L, 2L, 1L, 1L, 1L, 2L, 1L, 3L,
> > 1L, 2L, 3L, 2L, 2L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 2L, 1L, 2L, 1L,
> > 1L, 3L, 1L, 2L, 3L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 3L,
> > 2L, 1L, 2L, 3L, 3L, 2L, 1L, 1L, 2L, 3L, 3L, 2L, 1L, 3L, 1L, 1L,
> > 2L, 2L, 1L, 2L, 1L, 2L, 3L, 3L, 3L, 2L, 3L, 3L, 1L, 2L, 3L, 2L,
> > 3L, 1L, 3L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 3L, 2L, 2L, 1L, 1L, 1L,
> > 2L, 3L, 3L, 2L, 1L, 2L, 3L), .Label = c("alive", "dead", "missed"
> > ), class = "factor")
> > >
> >
> > Anything else but positive integers?
> >
> 
> You clearly do not understand factors. RTFM.
> 
> cheers,
> 
> Rolf Turner
> 

Rolf,

Clearly, someone doesn't understand something, and it may be me.  I understood the OP to be asking if there was a way of adding labels to specific variable values without changing the underlying values (like a format in SAS or apparently "value labels" in SPSS).  To use your example

x <- sample(0:2,100,TRUE)

The OP wanted to "associate" the label "alive" with the value 0, but didn't want the underlying value in x to change.  The construction 

y <- factor(x,labels=c("alive","dead","missed"))

creates a factor, y, where the underlying factor value is 1 and the label is "alive" where x had the value of 0.  Without retaining the vector x, or knowing how y was created, one can't get back to the original value of 0.  I am agnostic about whether that is good or bad, but it seems that your approach does not meet the OP's original request.  Am I missing someting?

Dan

Daniel Nordlund
Bothell, WA USA



More information about the R-help mailing list