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

Seleccionar un subconjunto de variables

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

Excluir variables

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"

Seleccionar casos

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:

http://www.statmethods.net/management/operators.html