9. Creación y recodificación de variables

En muchas situaciones se hace necesario manipular una base de datos para crear o recodificar alguna variable. En este artículo trataremos algunos ejemplos básicos. En ellos, primero que nada, crearemos una nueva base de datos para hacer en ella las modificaciones, de manera que la base de datos original quede intacta. Debe recordar almacenar la nueva base de datos, de manera que no tenga que repetir las modificaciones en el futuro. En los ejemplos que siguen haré uso de la base de datos mtCars2, creada por mi para este ejercicio, que contiene datos omitidos para la variable ‘wt’ (peso). Los siguientes comandos se utilizan para leer la base mtCars2 y crear la base de datos mtCars2Mod que contendrá todas las modificaciones:

mtCars2Mod <- read.csv ("mtCars2.csv",header=TRUE)
head(mtCars2Mod)

Observe los valores ‘NA’ bajo la columna de la variable ‘wt’. Este es el código utilizado por R para denotar un dato omitido.

Creación de variables

En R se pueden crear variables nuevas haciendo uso de la operación de asignación ‘<-‘. Suponga que queremos evaluar un modelo de regresión cuadrático, como en el siguiente:

mpg = β01 wt + β2 wt2

En R podemos escribir este modelo como

mpg ~ wt + wt*wt

Otra forma de escribir el modelo sería creando primero una variable, que llamaré ‘wt2’, que sea el cuadrado de wt:

wt2 <- wt*wt

o también, si utilizamos en vez el símbolo de exponenciación, ‘^’:

wt2 <- wt^2

Ahora el modelo sería

mpg ~ wt + wt2

Muchas veces, cuando creamos variables nuevas, deseamos que éstas se incorporen a la base de datos. La manera de lograr esto es, simplemente, incluir el nombre de la base de datos en la definición de la nueva variable:

mtCars2Mod$wt2 <- mtCars2Mod$wt^2

Si ejecuta de nuevo el comando head(mtCars2Mod), podrá observar cómo se añadió un nueva columna a la base de datos con el nombre wt2. Así que creamos la variable y la incorporamos a la base de datos.

Si desea almacenar esta nueva base de datos modificada, puede utilizar el comando write.csv().

Como un segundo ejemplo considere la situación en la cual deseamos sumar las respuestas a los ítems que forman una escala. En este caso solo hay que utilizar la operación de sumatoria. Presumiendo que los ítems en la base de datos tienen por nombre it01, it02 e it03, podemos crear la variable ‘total’ así:

total <- it01 + it02 + it03

Otra situación en la que podemos desear crear una nueva variable es, por ejemplo, cuando queremos transformar una variable, x, para normalizarla. Si esta transformación fuese una logarítmica y asumiendo que no hay ceros en la base de datos, podríamos usar:

log_x <- log(x)

Aquí log_x es el nombre que escogí para la nueva variable. Además de la función para calcular el logaritmo natural, R posee una buena colección de funciones matemáticas, entre ellas:

abs(x)Valor absoluto de x.
sqrt(x)Raíz cuadrada de x.
round(x,n)Redondeo de x a n dígitos.
cos(x), sin(x), tan(x)Funciones trigonométricas de coseno, seno y tangente de x.
log(x)Logaritmo natural de x.
log10(x)Logaritmo base 10 de x.
exp(x)Exponencial de x.

Recodificación de variables

Recodificar un código de dato omitido

En SPSS, cuando se crea una base de datos, un dato omitido o faltante en una variable se representa por un ‘.’ . Si ese es el caso, cuando esa base de datos se lea en R, el dato omitido se representará con el código NA (‘not available’).

Por otro lado, es usual que los analistas de datos utilicen un código para representar un dato omitido, tal como un ‘888’ o ‘999’. En ese caso ese valor pasará sin cambios al leer el archivo en R. Sin embargo, R no lo tratará como un valor omitido. Para ello hay que recodificar ese código para que asuma el valor de NA.

Esta es la manera de hacerlo en R. En este ejemplo vamos a crear una variable nueva que llamaré ‘varRec’ que contendrá a la variable recodificada:

varRec <- misDatos$var[misDatos$var==999]<-NA

La manera de interpretar la expresión a la derecha es: ‘en la variable var de la base de datos misDatos localice aquellos valores iguales a 999 y asígnele el valor NA.

Otras recodificaciones

Suponga que un ítem se mide utilizando una escala Likert de 7 puntos y que se desean invertir sus valores, como por ejemplo de {1, 2, 3, 4, 5, 6, 7} a {7, 6, 5, 4, 3, 2, 1}. En este caso la variable se puede invertir así:

misDatos$It01r <- 8 - misDatos$it01

En esta expresión se desea recodificar el item #1 de la base de datos llamada ‘misDatos’. Por ejemplo, si el valor de It01 fuese 7, entonces el resultado de evaluar la expresión sería 8 – 7 = 1. De igual forma, si el valor de It01 fuese 1, entonces el resultado sería 8 – 1 = 7. De la misma manera, los valores intermedios (2, 3, 4, 5, 6) serían invertidos como se deseaba.

Como último ejemplo, suponga que en un cuestionario se pregunta la edad a los participantes, pero para propósitos de análisis se desea reagruparlas en tres categorías: menores de 21 años, de 22 a 50 años y 51 años o más. Presuma que la base de datos tiene por nombre ‘datosCuest’. Podemos llevar la recodificación de la siguiente manera:

datosCuest$edad_r [datosCuest$edad < 22] <- 1
datosCuest$edad_r [(datosCuest$edad) > 22 & (datosCuest$edad) < 51] <- 2
datosCuest$edad_r [datosCuest$edad > 51] <- 3

Observe que se utilizó el nombre edad_r para almacenar los valores recodificados. De esta manera, los datos originales de la variable ‘edad’ siguen intactos.

Etiquetas de valores de variables categóricas

Una variable categórica entrada usando códigos numéricos puede definirse mediante la función factor(). En esta función también se pueden definir etiquetas para las variables usando las opciones ‘levels’ y ‘labels’. En el siguiente ejemplo añadiremos etiquetas a la variable ‘am’ en la base de datos mtcars y realizamos una prueba t para comparar el millaje de automóviles de transmisión automática y transmisión manual:

data(mtcars)
misDatos <- mtcars
head(misDatos)
attach(misDatos)
misDatos$gear2 <- factor(am, levels=c(0,1),labels=c("auto","manual"))
head(misDatos)

Observe que hemos creado una variable nueva, ‘gear2’, para crear la variable categórica utilizando etiquetas. La variable ‘am’ tiene dos posibles valores, 0 y 1, correspondiente a transmisiones automáticas o manuales. La opción ‘levels’ define estos valores, mientras que la opción ‘labels’ define las etiquetas que identificarán los valores de la variable. Una vez definida ‘gear2’ como un factor, podemos utilizarlo como variable independiente en una prueba t:

t.test(mpg~misDatos$gear2)

Welch Two Sample t-test

data: mpg by misDatos$gear2
t = -3.7671, df = 18.332, p-value = 0.001374
alternative hypothesis: true difference in means between group auto and group manual is not equal to 0
95 percent confidence interval:
-11.280194 -3.209684
sample estimates:
mean in group auto mean in group manual
17.14737 24.39231

You may also like...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *