Extracción de casos

Esta es otra de las operaciones básicas del análisis estadístico, especialmente cuando tenemos ficheros de datos muy grandes.

Como casi todo en R, hay varias maneras de llevar a cabo tal selección. Una de ellas es mediante la función subset(). En este caso introduciremos una condición que afecta a los registros y no a las variables. Por ejemplo, para seleccionar alumnos/as con más de 3 insuficientes deberíamos proceder de la siguiente manera
granfracasoescolar<-subset(resultados,IN>3)
en este caso, a continuación del nombre del data.frame se introduce el nombre de la variable, y la condición de selección. Hay que hacer notar que la condición de igualdad se indica con doble signo igual (==). Para ver el resultado, utilizaremos de nuevo str()
str(granfracasoescolar)
`data.frame': 1581 obs. of 9 variables:
$ Evaluacion: Factor w/ 3 levels "1","2","F": 2 1 2 3 1 2 3 3 3 2 ...
$ Curso : num 2 1 1 2 1 2 1 2 1 1 ...
$ B : num 0 0 0 0 0 0 0 0 0 0 ...
$ IN : num 0 0 0 0 0 0 0 0 0 0 ...
$ NT : num 3 3 3 3 3 3 3 3 3 3 ...
$ SB : num 6 6 6 6 6 6 6 6 6 6 ...
$ SF : num 0 0 0 0 0 0 0 0 0 0 ...
$ Año : Factor w/ 8 levels "1994","1995",..: 5 5 8 7 5 8 5 7 6 7 ...
$ Alumno : Factor w/ 4838 levels "1","2","3","4",..: 3117 3208 2692 3834 3619 3896 4024 4188 2693 3835 ...
Podemos ver que el nuevo data.frame sigue teniendo las mismas 9 variables pero el número de casos se ha reducido de 4838 a 1581.

En muchas ocasiones la condición de selección es múltiple. En ese caso no hay más que encadenarlas con el signo &. Por ejemplo, para seleccionar el alumnado con más de tres notables y con tres bienes habría que teclear
selección<-subset(resultados,NT>3 & B==3).
Una manera menos intuitiva de conseguir el mismo resultado es la siguiente
selección<-resultados[resultados$NT>3& resultados$B==3 ]

Combinando las dos posibilidades estudiadas anteriormente, se puede realizar una extracción simultanea de variables y casos. Así, para crear un data.frame que contenga sólo el número de caso y el número de insuficientes del alumnado correspondiente al año 1998 podríamos teclear
otraseleccion<-subset(resultados,Año==1998,select=c(Alumno,IN))

En alguna ocasión puede interesarnos eliminar del análisis todos los datos en los que haya algún valor perdido. Como veremos, esta puede ser una medida extrema ya que hay funciones en R que nos permiten ignorar los casos con valores perdidos para las variables implicadas sin necesidad de eliminarlas del data.frame (ver la sección de Estadística básica). En cualquier caso, si quisiéramos hacerlo, podríamos teclear
sinNA<-na.omit(resultados)
lo que crearía un nuevo data.frame en el que encontraremos sólo los casos completos.

2007-02-12