Extracción de variables

En ocasiones el fichero de datos original tiene más variables de las que nos interesan para nuestro análisis. En esos casos, puede interesarnos crear un nuevo data.frame en el que sólo aparezcan las variables que realmente vayamos a necesitar. Esta operación puede realizarse con la función subset(). Esta es una función muy útil y la estudiaremos también en otra sección.
Para extraer variables hay que indicar a la función el nombre del data.frame y las variables que deseamos extraer. Como queremos generar un data.frame nuevo, deberemos realizar una operación de asignación. Por ejemplo, para crear un data.frame llamado fracasoescolar con las variables Año, Evaluacion, Curso e IN deberíamos teclear fracasoescolar<-subset(resultados,select=c(8,1,2,4)). Si solicitamos a R la estructura del nuevo data.frame con str(fracasoescolar) veremos lo siguiente:
`data.frame': 4838 obs. of 4 variables:
$ Año : Factor w/ 8 levels "1994","1995",..: 5 6 8 5 7 7 5 6 5 6 ...
$ Evaluacion: Factor w/ 3 levels "1","2","F": 3 3 2 2 3 3 3 2 3 1 ...
$ Curso : num 1 2 1 1 1 1 2 2 1 2 ...
$ IN : num 0 0 0 0 0 0 0 0 0 0 ...

Como se ve, han desaparecido las variables no deseadas y se han seleccionado las que queremos, respetando el orden en el que se han introducido en la función subset().

Vamos a estudiar un poco en detalle cómo se indica qué variables se quieren extraer. Esto de hace con el argumento select. En el ejemplo hemos tecleado select=c(8,1,2,4). Ese c(8,1,2,4) indica a R que concatene las variables que ocupan el octavo, primero, segundo y cuarto lugar. La c que precede al paréntesis es imprescindible y se utiliza en R siempre que se quiere crear lo que se llama un vector.

En lugar de número de orden, podríamos haber utilizado el nombre de las variables, así
fracasoescolar<-subset(resultados,select=c(Año,Evaluacion,Curso,IN)
habría producido el mismo resultado.

En ocasiones son más las variables que quiero extraer que las que deseo descartar. En esos casos es más conveniente utilizar otra forma de selección. Por ejemplo
fracasoescolar<-subset(resultados,select=-c(B,NT,SB)
incluiría en el data.frame fracasoescolar todas las notas menos (como le indica el signo - delante del operador de concatenación) el B, el NT y el SB.

Si, por casualidad, las variables a extraer son consecutivas, podríamos seleccionarlas en bloque. Así,
probatinas<-subset(resultados,select=(1:5))
crearía un data.frame en el que se incluirían las primeras cinco variables. Nótese que, en este caso, no se introduce la concatenación; R entiende los dos puntos entre el 1 y el 5 como desde la uno a la cinco, ambas inclusive.

2007-02-12