El comando RECODE
se utiliza para cambiar algunos o todos los valores de una variable. Los nuevos valores pueden almacenarse en la misma variable o en una nueva.
Ejemplo sencillo:
RECODE var1 var2 (1,2 = 1) (3,4 = 2).
Ejemplo más complejo:
RECODE var1 (1,2 = 1) (3 thru 8 = 2) (missing = 99) (else = copy)
INTO var1new.
General
Supongamos que tenemos la variable famimpor con los valores 1, 2, 3 y 4, que mide la importancia de tener una familia para el encuestado.
RECODIFICAR famimpor (4=3).
Esto cambia todas las ocurrencias del valor 4 al valor 3. El valor original 3 permanece sin cambios. (Si tiene etiquetas de valores, quizás deba cambiarlas ahora en consecuencia). Todos los demás valores permanecen sin cambios, también.
RECODE famimpor (1,2 =1) (3,4 = 2).
Esto crea una variable dicotómica con punto de corte entre 2 y 3.
RECODE famimpor (1=4) (2=3) (3=2) (4=1).
Esto invierte el orden de los valores. Tenga en cuenta que esto se puede lograr más fácilmente con el comando COMPUTE
COMPUTE famimpor = 5 - famimpor.
). Esto puede ser útil sihay muchas categorías.
Crear nuevas variables
Un problema es que todos los ejemplos anteriores cambian los valores originales de la variable. Sólo debería hacerlo si puede reconstruir los valores originales a partir de los nuevos (¡esto sólo sería posible en el último ejemplo!) o si está muy seguro de que tiene una copia válida de su conjunto de datos en otro lugar. Afortunadamente, puedes crear nuevas variables con el comando RECODE
añadiendo INTO NEWVAR
. Vea los siguientes ejemplos.
RECODIFICAR famimpor (1,2 =1) (3,4 = 2) INTO famimpod.
Esto crea una variable dicotómica con punto de corte entre 2 y 3. Sin embargo, la antigua variable permanece intacta y la variable dicotómica se añade al conjunto de datos con el nombre famimpod (con «D» indicando que tienes una variable dicotómica. Yo utilizo este tipo de dispositivos memotécnicos con bastante frecuencia, pero, por supuesto, usted no tiene por qué hacerlo.)
Nótese, sin embargo, que hay que tomar algunas precauciones cuando se REGISTRA EN una nueva variable. En este caso, tienes que estar seguro de que la nueva variable tiene todos los valores válidos que deseas que tenga. Si el comando RECODE
nombra sólo una parte de los valores, todos los demás valores serán tratados como valores ausentes del sistema. Sin embargo, hay una manera fácil de lidiar con este problema.
Error: RECODE famimpor (4=3) INTO famimpon.
Esto cambiaría todas las ocurrencias del valor 4 al valor 3. Sin embargo, todos los demás valores se tratarían como faltantes del sistema. Aquí está la mejor manera:
RECODIFICAR famimpor (4=3) (ELSE=COPY) INTO famimpon.
Esto cambia todas las ocurrencias del valor 4 al valor 3, y todos los demás valores se copian a la nueva variable. Por supuesto, puedes hacer tantas recodificaciones explícitas como quieras y luego ocuparte del resto mediante ELSE=COPY.
La parte ELSE del comando RECODE no se limita al caso «COPY» que acabamos de explicar. También puede utilizarla con valores explícitos, como en el siguiente ejemplo:
RECODE famimpor (4,3=2) (ELSE=1) INTO famimpor.
Un problema con RECODE INTO, sin embargo, es que las etiquetas de las variables y los valores no se crean automáticamente (¿cómo deberían hacerlo?). Así que no olvide etiquetar la nueva variable.
Se pueden abordar varias variables
en una sola sentencia RECODE
, siempre que todas las variables deban verse afectadas de la misma manera, como en el siguiente ejemplo.
RECODE famimpor workimpo chldimpo (4,3=2) (ELSE=1).
Sin embargo, si se desea RECODE
estas variables EN nuevas variables, para cada variable es necesaria una línea de comando distinta RECODE
.
Tratamiento de los valores perdidos
Los valores perdidos pueden ser tratados a través de las palabras clave «sysmis» o «missing».
Suponga que además de los valores 1 a 4, también hay valores 8 y 9 que se definen como valores perdidos. Aquí hay algunos ejemplos y lo que hacen.
RECODIFICAR famimpor (missing = 8).
Todos los valores perdidos (es decir, los valores 8 y 9 y quizás también los valores perdidos del sistema) tendrán el valor 8. 8 seguirá siendo definido como missing.
RECODIFICAR famimpor (missing = 7).
Todos los valores missing (es decir, los valores 8 y 9 y quizás también los valores missing del sistema) tendrán el valor 7. Si tiene valores perdidos del sistema y quiere recodificar sólo éstos a otro valor, puede utilizar la palabra clave «sysmis» en lugar de «missing».
RECODE famimpor (sysmis = 7).
De nuevo, si ha definido los valores 8 y 9 como perdidos, 7 no será reconocido como un valor (anteriormente) perdido. Es posible que desee definir 7 ahora como faltante o asignar una etiqueta de valor que le diga el significado de 7.
Simplificaciones
A menudo, varios valores de una variable tienen que ser abordados. Algunas palabras clave ayudan a facilitar este proceso.
RECODE famimpor (menor a 3 = 3).
RECODE famimpor (2 a mayor = 2).
El primer comando recodifica todos los valores desde el valor más bajo hasta (e incluyendo) el valor 3 en el valor 3. El segundo comando recodifica todos los valores desde el valor 2 hasta (e incluyendo) el valor más alto en el valor 2. Tenga en cuenta que «más bajo» puede ser abreviado como «lo» y «más alto» como «hi». ATENCIÓN: Suponiendo que 8 y 9 todavía se definen como valores perdidos de usuario, estos serán recodificados a 2 en el último ejemplo (y por supuesto ya no se definirán como perdidos).