[R] how to recode an ordered factor

arun smartpink111 at yahoo.com
Fri Dec 21 18:34:24 CET 2012


HI,

May be this helps:

 dat1<-data.frame(var1=factor(rep(1:4,times=3)))
dat1<-transform(dat1,o.var1=ordered(var1,levels=c(1,2,3,4),labels=c("very
 satisfied", "fairly satisfied","not very satisfied", "not at all 
satisfied")))
dat2<-transform(dat1,or.var1=factor(o.var1,levels=rev(levels(o.var1))))
str(dat2)
#'data.frame':    12 obs. of  3 variables:
# $ var1   : Factor w/ 4 levels "1","2","3","4": 1 2 3 4 1 2 3 4 1 2 ...
# $ o.var1 : Ord.factor w/ 4 levels "very satisfied"<..: 1 2 3 4 1 2 3 4 1 2 ...
# $ or.var1: Ord.factor w/ 4 levels "not at all satisfied"<..: 4 3 2 1 4 3 2 1 4 3 ...
 levels(dat2[,2])
#[1] "very satisfied"       "fairly satisfied"     "not very satisfied"  
#[4] "not at all satisfied"
 levels(dat2[,3])
#[1] "not at all satisfied" "not very satisfied"   "fairly satisfied"    
#[4] "very satisfied"    


#or
dat3<-transform(dat1,or.var1=reorder(o.var1,
 new.order=c("not at all satisfied","not very satisfied","fairly 
satisfied","very satisfied")))
 identical(dat3,dat2)
#[1] TRUE
A.K.



----- Original Message -----
From: Francesco Sarracino <f.sarracino at gmail.com>
To: r-help at r-project.org
Cc: 
Sent: Friday, December 21, 2012 11:43 AM
Subject: [R] how to recode an ordered factor

Dear R helpers,

I'm trying to recode an ordered factor to reverse its scale, but I can't
figure out how to make it. I am using the Recode function provided by the
Car package.

I've created an ordered variable:
data$o.var1 <- ordered(data$var1, levels=c(1,2,3,4), labels =c("very
satisfied", "fairly satisfied", "not very satisfied", "not at all
satisfied"))

Now, I'd like to have a new variable ranging from 4 = Very satisfied to 1=
not at all satisfied.

I've tried with the following:
data$or.var1 <- Recode(data$o.var1, "1 = 4; 2 = 3; 3=2; 4=1")
but it looks like the new variable loses the order:
the output of table(data$or.var1) looks like:

fairly satisfied not at all satisfied not very satisfied very satisfied

I believe the new variable is ordered in alphabetical order, but when I
tried to use the levels option I lost the initial information.
Can you help figuring out what I am doing wrong?
thanks in advance,
f.





-- 
Francesco Sarracino, Ph.D.
https://sites.google.com/site/fsarracino/

    [[alternative HTML version deleted]]

______________________________________________
R-help at 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.





More information about the R-help mailing list