En ciertos casos nos interesa trabajar con una selección de variables, o una selección de casos de una base de datos.
En esta presentación veremos algunos procedimientos para trabajar con una selección de casos.
Cargamos los datos de trabajo
Base de datos para estos ejercicios: Familia y roles de género 2012, a descargar de:
http://iop-data.pucp.edu.pe/busqueda/encuesta/71?
Se sugiere descargar también el cuestionario para utilizarlo como referencia de libro de códigos. Descomprimir y grabar el archivo SPSS en el directorio de trabajo de R
# Importar la base de datos del SPSS a un data frame de R
library(foreign)
genero <- as.data.frame(read.spss("IOP_1212_01_B.sav"))
## re-encoding from UTF-8
Queremos trabajar con un grupo reducido de variables de la base de datos. Por ejemplo: SEXO, EDAD, P1 y P2.
Paso 1: Creamos un vector con los nombres de las variables que queremos seleccionar
misvars <- c("SEXO", "EDAD", "P1", "P2")
Paso 2: Selecionamos las variables del data frame original y las guardamos en un nuevo data frame:
nuevo.df <- genero[misvars]
names(nuevo.df)
## [1] "SEXO" "EDAD" "P1" "P2"
table(nuevo.df$SEXO)
##
## Masculino Femenino
## 589 614
Podemos obtener el mismo resultado, usando la función “subset”
nuevo.df2 <- subset(genero, selec=c(SEXO, EDAD, P1, P2))
names(nuevo.df2)
## [1] "SEXO" "EDAD" "P1" "P2"
table(nuevo.df2$SEXO)
##
## Masculino Femenino
## 589 614
En ciertas ocasiones podríamos estar interesados en excluir alguna variable de un data frame. Por ejemplo, excluir la variable EDAD de uno de los nuevos DF que hemos creado.
var.fuera <- names(nuevo.df) %in% c("EDAD")
nuevo.df3 <- nuevo.df[!var.fuera]
names(nuevo.df3)
## [1] "SEXO" "P1" "P2"
Podemos estar interesados en trabajar con un subconjunto de casos de una base de datos. Supongamos que queremos generar un data frame solo de los casos de Lima y Callao.
genero.s1 <- subset(genero, Ambito=="Lima-Callao")
length(genero.s1$NRO)
## [1] 448
Otra posibilidad es seleccionar sólo a los hombres de Lima y Callao
genero.s2 <- subset(genero, Ambito=="Lima-Callao"
& SEXO=="Masculino")
length(genero.s2$NRO)
## [1] 218
Podemos hacer una seleccion por rango de edad: las mujeres de Lima y Callao entre 25 y 45 años
genero.s3 <- subset(genero, Ambito=="Lima-Callao"
& SEXO=="Femenino" &
(EDAD >= 25 & EDAD <= 45))
length(genero.s3$NRO)
## [1] 104
Para mayores detalles sobre el uso de operadores lógicos en el R, sugerimos revisar la siguiente página web: