(Ted Harding) wrote: > On 04-Aug-07 22:02:33, William Revelle wrote: > >> Alexis and John, >> >> To reverse a Likert like item, subtract the item from the maximum >> acceptable value + the minimum acceptable value, >> That is, if >> x <- 1:8 >> xreverse <- 9-x >> >> Bill >> > > A few of us have suggested this, but Alexis's welcome for the > recode() suggestion indicates that by the time he gets round to > this his Likert scale values have already become levels of a factor. > > Levels "1", "2", ... of a factor may look like integers, but they're > not; and R will not let you do arithmetic on them: > > >> x<-factor(c(1,1,1,2,2,2)) >> x >> > [1] 1 1 1 2 2 2 > Levels: 1 2 > >> y<-(3-x) >> > Warning message: > "-" not meaningful for factors in: Ops.factor(3, x) > >> y >> > [1] NA NA NA NA NA NA > > However, you can turn them back into integers, reverse, and then > turn the results back into a factor: > > >> y <- factor(3 - as.integer(x)) >> y >> > [1] 2 2 2 1 1 1 > Levels: 1 2 > > So, even for factors, the insight undelying our suggestion of "-" > is still valid! :) > Er, wouldn't y <- factor(x, levels=2:1, labels=1:2) be more to the point?
______________________________________________ R-help@stat.math.ethz.ch 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.