[R] Invert Likert-Scale Values

(Ted Harding) ted.harding at nessie.mcc.ac.uk
Sun Aug 5 01:10:01 CEST 2007


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! :)

Best wishes,
Ted.

--------------------------------------------------------------------
E-Mail: (Ted Harding) <ted.harding at nessie.mcc.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 05-Aug-07                                       Time: 00:09:58
------------------------------ XFMail ------------------------------



More information about the R-help mailing list