jueves, 29 de septiembre de 2011

Breve introducción a R. (I)


¿Qué es R?

R es un lenguaje y entorno (o ambiente) con un conjunto integrado de programas para la manipulación de datos, cálculo y gráficos.
R es un proyecto GNU similar al lenguaje S (J. Chambers et al., Bell Labs.), pero que se distribuye bajo la General Public License (GPL, Open Sourse). Esta licencia no tiene restricciones de uso, sólo obliga a que la distribución sea siempre GPL.

Robert Gentleman y Ross Ihaka (también conocidos como “R & R”) liberaron el código R como software libre en 1996. http://www.nytimes.com/2009/01/07/technology/business-computing/07program.html?pagewanted=all

Permite
·         Almacenamiento y manipulación efectiva de los datos.
·         Operadores para cálculo sobre variables indexadas (arrays) y matrices.
·         Amplia, coherente e integrada colección de herramientas para análisis de datos.
·         Grandes posibilidades graficas.
·         Lenguaje de programación orientado a objetos bien desarrollado, simple y efectivo.

Ventajas
·         Es un ambiente o entorno de trabajo, es decir, presenta herramientas muy flexibles que pueden extenderse fácilmente mediante paquetes (packages; http://cran.r-project.org/mirrors.html) y permite crear nuestras propias funciones.
·         Gráficos de alta calidad exportables en diversos formatos: PostScript, pdf, bitmap, pictex (LaTeX), png, jpeg, etc.
·         Comunidad muy dinámica de desarrolladores de paquetes que cuenta con estadísticos de prestigio
·         Lenguaje orientado a objetos
·         Consume pocos recursos informáticos
·         Puede ejecutarse remotamente (telnet)

Obtención e instalación de R
Depende del sistema operativo, pero todo se puede encontrar en http://cran.r-project.org/bin.
o    
   Windows: bajar ("download") el ejecutable desde http://cran.r-project.org/bin/windows/base. (por ejemplo, http://cran.r-project.org/bin/windows/base/rw1070.exe).
o    Ejecutar el fichero. Instalará el sistema base y los paquetes recomendados.
o    GNU/Linux: dos opciones:
o    Obtener el R-x.y.z.tar.gz y compilar desde las fuentes, y también bajar los paquetes adicionales e instalar. (Buena forma de comprobar que el sistema tiene development tools).
o    Obtener binarios (ej., *.deb para Debian, *.rpm para RedHat, SuSE, Mandrake).

¿Cómo trabaja y cómo debo utilizarlo?
Windows:
  • o    Hacer click dos veces en el icono. Se abrirá "Rgui".
  • o    Iniciar R desde Tinn-R.
  • o    Desde una "ventana del sistema" ejecutar "Rterm"; parecido a "R" en Unix o Linux.

GNU/Linux:
  •     Teclear "R" en una shell.
  •     Iniciar R desde Tinn-R.

- R es un lenguaje Orientado a Objetos: significa que las variables, datos, funciones, resultados, etc., se guardan en la memoria activa del computador en forma de objetos con un nombre específico. El usuario puede modificar o manipular estos objetos con operadores (aritméticos, lógicos, y comparativos) y funciones (que a su vez son objetos).
Mientras que programas más clásicos muestran directamente los resultados de un análisis, R guarda estos resultados como un “objeto”, de tal manera que se puede hacer un análisis sin necesidad de mostrar su resultado inmediatamente. Esto puede ser un poco extraño para el usuario, pero esta característica suele ser muy útil.
Otras características de los lenguajes orientados a objetos son la herencia: las subclases heredan las características de las superclases, y el polimorfismo la misma operación aplicada a diferentes objetos resulta en diferentes implementaciones.
- R es un lenguaje interpretado (como Java) y no compilado (como Fortran, Pascal, . . . ), lo cual significa que los comandos escritos en el teclado son ejecutados directamente sin necesidad de construir ejecutable

Sistema de ventanas
MacOS X RAqua desktop
Unix desktop
Windows desktop

Al hacer doble click en el ícono se abre una consola de línea de comandos, la “Gui” (Graphical User Interface), con un mensaje de inicio.


R y los editores de textos

Tinn-R 
Tinn-R (Tinn Is Not Notepad-R) es un editor de código gratuito que se puede utilizar con R, pero también está preparado para escribir código en C++, HTML, Java y otros lenguajes populares.
Está distribuido bajo licencia GNU, y trabaja tanto en Windows (9X/Me/2000/XP) como en los demás sistemas operativos.
A diferencia de Notepad permite resaltar la sintaxis de R (en archivos *.R, *.r, *.Q o *.q), lo cual da mayor claridad al escribir el código. También permite la numeración de renglones, la ayuda contextual y el envío de código al entorno de R. Disponible en: http://www.sciviews.org/Tinn-R/.



Podemos modificar los comandos rápidos en el apartado R>Hotkeys.
Seleccionamos CTRL y Key ponemos R
Lo ubicamos en Selection
y decimos que Add
Y lo activamos

RStudio
RStudio es otro editor para scripts disponible para usuarios de R en todos los sistemas operativos.
Los autores lo consideran un entornor de desarrollo integrado que combina un interfaz muy intuitiva con herramientas de código muy potentes que permiten sacar el máximo provecho a R.
La versión en pruebas es gratuita y está disponible en http://www.rstudio.org/.
Como los anteriores la ventaja de este editor es que ofrece una serie de opciones no existentes en R, entre otras, por ejemplo, comprobar rápidamente que ningún paréntesis queda sin cerrarse o marcar, copiar y pegar columnas.
Pero además nos da un listado de las variables y nos da una descripción de los bancos de datos que hemos introducido. También tiene una lista de los paquetes instalados y los gráficos realizados.



Sintaxis básica de R
> R cursor (prompt): símbolo del sistema.
+ Continuartion promt: indica una orden incompleta.
; separa órdenes en la misma línea.
, separa argumentos entre paréntesis.
# para realizar comentarios.
q() # para salir del programa.
<- o = operador para la asignación de objetos.
El operador “asignar” permite crear objetos en R. El nombre de un objeto debe:
- comenzar con una letra (A-Z y a-z).
- puede incluir letras, dígitos (0-9), y puntos (.).
- R discrimina entre letras mayúsculas y minúsculas para el nombre de un objeto, de tal manera que x y X se refiere a objetos diferentes.
- R no interpreta los espacios excepto para la asignación (bien: <- , mal: < -)
Todos los objetos creados se guardan en el workspace o área de trabajo. Para ver qué objetos están en el workspace se usa la función ls().
ls() relación de objetos disponibles en el entorno (.Englov)
 ls(package=__) ó (library:__) relación de objetos disponibles en la librería_
 rm(__) para borrar objetos __. rm(list=ls()) borra todos.
Guardar un archivo
-.RData    # archivo de objetos
-.RHistory    #archivo de historia de órdenes
-guardar u recuperar el trabajo de una sesión: Savehistory(), loadhistory()
-directorio de trabajo: getwd(), setwd()
-Instalar y activar (loading) los paquetes: update.packages(), install.packages(); library(); require()
-Cambios en la consola de R: Edit-> GUI preferences
Flechas verticales del teclado () recorren el historial de ordenes
Flechas horizontales () permiten el movimiento dentro de la línea
attach(pepita) permite trabajar con los elementos de pepita sin nombrar a pepita
 dattach(pepita) vuelve a unir los componentes de pepita

Ayuda
help(summary)
?summary
help.search(“median”) # lista de funciones o paquetes donde aparece una palabra
help.start() # abre la ayuda en html
demo() # lista las demostraciones disponibles
demo(graphics)
data() relación de todas las hojas de datos (data.frame) de todas las librerías disponibles
data(package=__) relación de los data.frame de la librería ...
data(pepita) carga en la memoria en uso el objeto pepita


Órdenes básicas
-R como calculadora: aritmética y funciones básicas
·         R puede operar sobre vectores enteros de un golpe
·         Regla del reciclado
·         Operaciones aritméticas +, -, *, /, ^, %%, %/% ,sqrt, log, log10, log2, log(x, base), exp, sin, cos, tan
·          Otras operaciones con vectores: max, min, range, mean, var, sum, prod, which.max, which.min, cumsum, cumprod, …
·          Operaciones comparativas y lógicas: <, >, <=, >=, ==, ¡= , ¡, &, |, xor() y los parecidos &&, ||
·          Generacion de secuencias regulares: seq, :, rep
-R como lenguaje: objetos
·         Tipos de objetos: vectores, arrays, matrices, listas, data.frames, factores. Modos y atributos.


Citando R
citation(): Muestra los datos de R y como éste ha de ser citado.
citation("pkgname"): Indica cómo se han de citar los paquetes empleados.

Documentación sobre R
•Michael J. Crawley. 2007. The R Book. John Wiley & Sons Ltd,
•Michael J. Crawley. 2005. Statistics: An Introduction using R. Wiley. ISBN 0-470-02297-3.
•John Verzani. 2005. Using R for Introductory Statistics. Chapman & Hall/CRC, Boca Raton, FL, ISBN 1-584-88450-9.
Para ver más: http://www.r-project.org/doc/bib/R-books.html


Trabajar con los datos

-Importando y exportando datos
·         Formato .Rdata. Formato .RData:
o    Guardar:
§   save(__, __ , file=”___.Rdata”)
§  save.image(file=”___.RData”) guarda todo el directorio de trabajo
o    Recuperar: load(“__.RData”)
·         Formato ASCCI. Archivos .r
o    Guardar: dump(“__“, “__“, ”___.r”, append=_T ó F_)
o    Recuperar: source(“__.r”) ejecuta las órdenes de R que están en el archivo __.r
·         Formato ASCCI. Archivos .txt (hojas de datos)
o    Guardar: write.table(_data.frame_, ”___.txt”, sep=”\t”, quote=F)
o    Recuperar: read.table(“__.txt”, header=T, , sep=”\t”)
·         Desde internet: Dataweb02 <- read.table(url("http://tinyurl.com/lzco8s"), row.names=1, dec=",")

-Siempre las tablas de datos deberán tener las variables en columnas y las observaciones en filas.
-Eliminar todos los espacios no necesarios.
-Poner nombres cortos tanto en variables como en observaciones. En estas últimas, todas deberán ser del mismo tamaño.
-Eliminar todo símbolo inútil (@, ·, \, #, &, %, $,…)
-Comprobar que no hay celdas vacías. Para asegurarnos eliminar todas las filas y columnas sobrantes.
Los datos que tienes en excel han de ser guardados en documentos de texto delimitados por tabulaciones. Y los huecos deben ser rellenados con NA (No Available) en mayúsculas.

Lo que sucede es que en ocasiones lo reconoce como una matriz en lugar de como un data frame, por lo que si lo detectas al hacer un str(data) pues tienes que decirle que se trata de un data frame para ello:
data01<-as.data.frame(data01) # se le dice que considere a data como un data.frame
data01$var01<-as.factor(data01$var01)  # estamos diciendo que considere la variable01 como un factor de la variable01