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
Status as a factor have correct levels. Levels and labels output as follows;

levels(Adbf$status); labels(Adbf$status)
[1] "0" "1" "2"
  [1] "1"   "2"   "3"   "4"   "5"   "6"   "7"   "8"   "9"   "10"
 [11] "11"  "12"  "13"  "14"  "15"  "16"  "17"  "18"  "19"  "20"
 [21] "21"  "22"  "23"  "24"  "25"  "26"  "27"  "28"  "29"  "30"
 [31] "31"  "32"  "33"  "34"  "35"  "36"  "37"  "38"  "39"  "40"
 [41] "41"  "42"  "43"  "44"  "45"  "46"  "47"  "48"  "49"  "50"

........................................................................"644 "

Can i add value.labels to status variable? If yes how? Can i see these
value.labels on results or graphics?


levels(Adbf$status) <- c("alive", "dead", "missed")

I'm probably making some mistake, but my efforts to use something similar to that construction have caused me to "destroy" variables in the sense that I have made them all NA's. My more (defensive?, unnecessary?) practice has become:

Adbf$status <- factor( Adbf$status, labels= c("alive", "dead", "missed") )

When I try to use the `levels<-' operation now on what I think is a similar object, I get an error but maybe that relates to the fact that levels and labels are different?

> status <- factor( sample(1:50, 400, replace=TRUE)  )
> status <- status[status %in% c("1", "2", "3")]
> str(status)
 Factor w/ 50 levels "1","2","3","4",..: 3 3 1 1 2 2 2 2 1 1 ...
> length(status)
[1] 24
> levels(status) <- c("alive", "dead", "missed")
Error in `levels<-.factor`(`*tmp*`, value = c("alive", "dead", "missed" :
  number of levels differs

The real question I have as a follow-on is what is the "right way" to take an object like this:

levels(testres) <- c(levels(testres), "NotDone")
> testres
[1] 1    2    3    <NA>
Levels: 1 2 3 NotDone

... and add a not done label?

These do not "work":
#1:
> levels(testres) <- c("NotDone", levels(testres))
> testres[4]
[1] <NA>
Levels: NotDone 1 2 3

#2:
> testres <- factor(c(1,2,3,NA))
> levels(testres) <- c(levels(testres), "NotDone")
> testres[4]
[1] <NA>
Levels: 1 2 3 NotDone

I have been converting to numeric, changing NA to 0 and then refactoring with labels=c("Not done", levels(old_factor) ), but that seems B(a)roke.


--

David Winsemius, MD
West Hartford, CT

______________________________________________
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