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.