Solución:
Recodificar puede significar muchas cosas y es fundamentalmente complicado.
Se pueden cambiar los niveles de un factor usando el levels
función:
> #change the levels of a factor
> levels(veteran$celltype) <- c("s","sc","a","l")
Transformar una variable continua simplemente implica la aplicación de una función vectorizada:
> mtcars$mpg.log <- log(mtcars$mpg)
Para agrupar datos continuos, consulte cut
y cut2
(en el paquete hmisc). Por ejemplo:
> #make 4 groups with equal sample sizes
> mtcars[['mpg.tr']] <- cut2(mtcars[['mpg']], g=4)
> #make 4 groups with equal bin width
> mtcars[['mpg.tr2']] <- cut(mtcars[['mpg']],4, include.lowest=TRUE)
Para recodificar variables continuas o factoriales en una variable categórica hay recode
en el paquete del coche y recode.variables
en el paquete Deducer
> mtcars[c("mpg.tr2")] <- recode.variables(mtcars[c("mpg")] , "Lo:14 -> 'low';14:24 -> 'mid';else -> 'high';")
Si está buscando una GUI, Deducer implementa la recodificación con los cuadros de diálogo Transformar y Recodificar:
http://www.deducer.org/pmwiki/pmwiki.php?n=Main.TransformVariables
http://www.deducer.org/pmwiki/pmwiki.php?n=Main.RecodeVariables
encontré mapvalues
de plyr
paquete muy práctico. El paquete también contiene la función revalue
que es similar a car:::recode
.
El siguiente ejemplo “recodificará”
> mapvalues(letters, from = c("r", "o", "m", "a", "n"), to = c("R", "O", "M", "A", "N"))
[1] "A" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "M" "N" "O" "p" "q" "R" "s" "t" "u" "v" "w" "x" "y" "z"
Encuentro esto muy conveniente cuando se deben transformar varios valores (es como hacer recodificaciones en Stata):
# load package and gen some data
require(car)
x <- 1:10
# do the recoding
x
## [1] 1 2 3 4 5 6 7 8 9 10
recode(x,"10=1; 9=2; 1:4=-99")
## [1] -99 -99 -99 -99 5 6 7 8 2 1