00. Primeros pasos

Este tutorial te llevará solamente unos 15 minutos. Aprenderás de forma rápida y sencilla los conceptos imprescindibles para ejecutar de forma autónoma los análisis estadísticos que necesites usando este toolbox. Al finalizar este pequeño tutorial podrás seguir y entender todas y cada una de las fases de la que consta un proceso de análisis estadístico de una matriz de datos, siguiendo las diferentes ayudas que encontrarás en cada apartado de esta página web.

Seguidamente aprenderás los siguientes conceptos: VECTOR, ASIGNAR, INDEXAR, DATA.FRAME, LISTA Y FUNCION

CONCEPTOS BÁSICOS EN R.

  • Ejecuta RStudio, sitúalo en el directorio de trabajo que desees (Session -> Set Working Directory -> Choose directory).

  • Crea un script nuevo mediante File -> New File -> R Script

VECTORES, INDEXADO y ASIGNADO

Ya estas list@ para dar tus primeros pasos en R. Crearemos en primer lugar un vector que llamaremos arbitrariamente mi.vector. Escribiremos esto en nuestro script de ejemplo que hemos creado anteriormente.

mi.vector= c(2,3,7,10,14,16,8,9,18,5)

Si ahora ejecutas CTRL+Intro (en adelante [CI] ) veras en consola una reproducción de esa orden. Has creado un vector utilizando la función c( ) . En R siempre deberás utilizar este medio para introducir n valores en un vector. Has ASIGNADO al objeto mi.vector el contenido numérico 2,3,...5. Si deseas ver el contenido del objeto (almacén) mi.vector, escribes debajo la orden mi.vector [CI], verás que R revela en consola el contenido de dicho vector:

> mi.vector

[1] 2 3 7 10 14 16 8 9 18 5

> mi.vector[c(3,7,9:10)]

[1] 7 8 18 5

Vamos a acceder al registro 4º de mi vector lo haremos mediante:

> mi.vector[4]

[1] 10

Registros 1 al 5: mi.vector[1:5]

> mi.vector[1:5]

[1] 2 3 7 10 14

Registros 3º, 7º, 9º hasta el último (Como no son consecutivos lo hacemos mediante c( )

mi.vector[c(3,7,9:10)]

Todos los registros menos el primero y el último (Observa el signo negativo) :

mi.vector[-c(1,10)]

> mi.vector[-c(1,10)]

[1] 3 7 10 14 16 8 9 18

Podemos crear también un vector con valores cualitativos de tipo carácter:

fac.inter = c('sexo','zona')

fac.inter = c('sexo','zona)

Observa las comillas entre los nombres de las variables. La ejecución de la segunda línea te dará un error dado que no se ha cerrado con apóstrofe el valor zona del objeto fac.inter.

Como veremos mas adelante la creación de este tipo de vectores será imprescindible por ejemplo para decirle a R que tenemos dos factores intergrupo (fac.inter) cuyos nombres son: sexo y zona.

DATA.FRAME

R organiza toda la información en 2 tipos fundamentales de almacenes que debes conocer (data.frame y lista). Para ello utilizaremos uno de los archivos de datos que puedes encontrar como demos en R. Asignaremos por comodidad al objeto datos el contenido de la base de datos OBrienKaiser. Escribe en tu script y ejecuta [CR]:

datos = OBrienKaiser

head(datos)

La orden head( ) es de gran importancia en R y deberás recordarla. Te enseñará por defecto los 6 primeros registros de cualquier objeto que contenga registros. En este caso datos pertenece a la clase data.frame (marco de datos) que como podrás ver en los 6 primeros registros guarda una gran similitud con las hojas de cálculo que has manejado. Se trata normalmente (no siempre) de sujetos en filas y variables en columnas. Esta base de datos se corresponde con un diseño split-plot con 2 variables intergrupo (tratamiento y genero) y 2 factores de medidas repetidas: fase con 3 niveles (antes, después y seguimiento) y hora con 5 niveles (5 medidas -1 cada hora - en cada fase). Se trata pues de un diseño 3 x 2 x 3 x 5.

Otra función que te será de gran utilidad es nombres.var( ) también puedes usar nv( ). Te dará el nombre de las variables de tu base de datos, la columna que ocupa y el tipo de variable (numérica, entero, factor, caracter, logica, etc). Veamos su uso con nuestros datos.

nombres.var(datos)

nombres.var(datos, alfabetico=T)

Si escribes dimension(datos) en consola o en tu script verás lo siguiente:

Tenemos 16 registros en 17 columnas (variables) correspondientes a 2 columas que contienen a los factores intergrupo y las 15 columnas siguientes al anidamiento 3 x 5 de los factores de medidas repetidas fase x hora. Una data.frame por tanto tiene filas y columnas a las cuales podemos acceder con el indexado que hemos utilizado en el paso anterior, solo que ahora necesitamos un índice para las filas y otro para las columnas. Veamos:

datos[que.filas, que.columnas]

Si observas la última línea verás que puedes acceder a cualquier variable de un data.frame simplemente escribiendo el nombre del almacén seguido del símbolo $ y seguidamente el nombre de la variable que deseas ver:

almacen$variable

Asimismo puedes crear una nueva variable en un almacén indicándolo de la misma forma y asignando el valor o valores que deseas para esa nueva variable:

almacen$nueva.variable = log(almacen$variable)

Estamos creando una nueva variable que resulta del logaritmo natural de otra existente en la base de datos almacen (NO UTILICES TILDES).

LISTA

Mientras que una data.frame es un objeto almacén que tiene filas y columnas, con una forma por tanto rectangular. Una lista debe ser imaginada como una especie de "cajonera" que contiene cajones cada uno con un nombre o número dentro de los cuales podemos almacenar cualquier otro tipo de objeto que nos apetezca con independencia de sus medida o tipología. Si recuerdas el data.frame anterior correspondiente al diseño split-plot 3 x 2 x 3 x 5 teníamos dos factores intragrupo que habíamos llamado fase con 3 niveles y hora con 5. Si dispones de un diseño con medidas repetidas como este debes indicarle a R con la lista (usando la función list) fac.intra el nombre de los factores y sus niveles correctamente anidados. Veamos:

fac.intra= list(fase=c('antes','despues','seguimiento'), hora=1:5)

Por supuesto si el anidamiento hubiese sido hora x fase, el factor hora debería ser indicado primero y fase después.

El indexado de los elementos de una lista es ligeramente diferente a los anteriores. Veamos distintos ejemplos:

Puedes ver que para acceder al elemento de una lista lo puedes hacer de la forma que ya conoces (con doble corchete). Sin embargo lo que obtendrás seguirá perteneciendo a la clase "lista" y si intentas realizar alguna operación numérica R te dará error. Sin embargo si extraes el elemento mediante doble corchete [[2]], eliminaras la clase lista y ahora la información así extraída adquirirá la clase originaria de dicha información.

FUNCIÓN

En general todas las aplicaciones informáticas trabajan con funciones que recogen mediante argumentos los elementos que al combinarse adecuadamente generaran el resultado deseado por el usuario. La llamada a una función requiere normalmente del nombre de la función y entre paréntesis los argumentos que usará dicha función.

nombres.de.la.funcion(arg1,arg2,arg3,...,arg.n)

En muchas ocasiones el usuario desea asignar a un nuevo objeto el resultado de dicha función:

objeto = nombres.de.la.funcion(arg1,arg2,arg3,...,arg.n)

En este toolbox la mayoría de las funciones tienen argumentos obligatorios y opcionales. Cuando un argumento es opcional normalmente actúa con un valor por defecto que el usuario puede modificar en cualquier momento. Veamos un ejemplo con la función frecuencias.fnc( ) mediante la cual podemos solicitar la tabla de frecuencias o de contingencia de una o varias variables.

frecuencias.fnc(datos, variable='gender')

frecuencias.fnc(datos, variable='gender', prop=T)

Hemos "añadido" el argumento prop con el valor T, este es un argumento de tipo lógico ya que solo admite dos valores: T (Verdadero - Thru) y F (Falso) En este ejemplo prop en realidad opcional y actúa por defecto con valor F (no da la tabla de frecuencias relativas - proporciones -)

Todas las funciones de este toolbox tienen como final de nombre fnc. En general para todas las funciones .fnc que desees utilizar rigen las siguientes normas de sintaxis:

  1. El primer argumento de la función suele ser el nombre de la base de datos sobre la que queremos operar y esta nunca va entre comillas y apóstrofes.

  2. Cada vez que nos refiramos a una variable dentro de la llamada de la función lo haremos o indicando el número de la columna o columnas de dichas variables o mediante su nombre. Si lo hacemos utilizando el nombre, este siempre deberá estar entre comillas o apóstrofes.

Veamos algunos ejemplos:

descriptivos.fnc(mis.datos, variable=1:6)

descriptivos.fnc(mis.datos, variable=c(1,3,5,6) )

descriptivos.fnc(mis.datos, vd='peso', que.factor='sexo')

percentiles.fnc(mis.datos, variable=c(2:5,7,12) )

percentiles.fnc(mis.datos, variable=c(2:5,7,12), que.factor='curso')

Si deseas acceder a una ayuda rápida para una determinada función solo debes escribir el nombre de la misma con los paréntesis y sin argumentos:

frecuencias.fnc( )