Manejo de datos con R y RStudio
Introducción a R
R
es un lenguaje y ambiente de alto nivel para el análisis de datos y gráficos. Está altamente relacionado con los lenguajes S
y Scheme
. Es un lenguaje de programación interpretado, de distribución libre, bajo licencia GNU, que puede correr en distintas plataformas Linux, Windows, MacOS e incluso PlayStation 3.
Chambers & Hastie (1991)
“Buscamos que los usuarios puedan iniciar en un entorno interactivo, en el que no se vean, conscientemente, a ellos mismos como programadores. Conforme sus necesidades sean más claras y su complejidad se incremente, deberían gradualmente poder profundizar en la programación, es cuando los aspectos del lenguaje y el sistema se vuelven más importantes.”
En este sentido R
no es un sistema estadístico, sino un ambiente en el que se aplican técnicas estadísticas. Es por esto que el software va de la mando del entendimiento de la teoría y técnicas estadísticas.
El Software recibe instrucciones y entrega resultados basados en las instrucciones. ¿Si el resultado no es el deseado, es culpa del software?
Breve história
S
es un lenguaje que fue desarrollado por John Chambers y colaboradores en Laboratorios Bell (AT&T), actualmente Lucent Tecnologies, en 1976. Este lenguaje, originalmente fue codificado e implementado como unas bibliotecas de FORTRAN
. Por razones de eficiencia, en 1988 S
fue reescrito en lenguaje C
, dando origen al sistema estadístico S, Versión 3. Con la finalidad de impulsar comercialmente a S
, Bell Laboratories dio a StatSci (ahora Insightful Corporation) en 1993, una licencia exclusiva para desarrollar y vender el lenguaje S
. En 1998, S
ganó el premio de la Association for Computing Machinery a los Sistemas de Software, y se liberó la versión 4, la cual es prácticamente la versión actual.
El éxito de S
fue tal que, en 2004 Insghtful decide comprar el lenguaje a Lucent (Bell Laboratories) por la suma de 2 millones de dólares, convirtiéndose hasta la fecha en el dueño. Desde entonces, Insightful vende su implementación del lenguaje S
bajo el nombre de S-PLUS
, donde le añade un ambiente gráfico amigable. En el año 2008, TIBCO compra Insightful por 25 millones de dólares y se continúa vendiendo S-PLUS
, sin modificaciones. R
, que define su sintaxis a partir de esa versión de S
, no ha sufrido en lo fundamental ningún cambio dramático desde 1998.
R
fue creado en 1992 en Nueva Zelanda por Ross Ihaka y Robert Gentleman. La intención inicial con R
, era hacer un lenguaje didáctico, para ser utilizado en el curso de Introducción a la Estadística de la Universidad de Nueva Zelanda. Para ello decidieron adoptar la sintaxis del lenguaje S
desarrollado por Bell Laboratories. Como consecuencia, la sintaxis es similar al lenguaje S
, pero la semántica, que aparentemente es parecida a la de S
, en realidad es sensiblemente diferente, sobre todo en los detalles un poco más profundos de la programación.
Luego de la creación de R
, se da un primer anuncio al público del software en 1993. En el año de 1995 Martin Mächler, de la Escuela Politécnica Federal de Zúrich, convence a Ross y Robert a usar la Licencia GNU para hacer de R
un software libre. Como consecuencia, a partir de 1997, R
forma parte del proyecto GNU. Con el propósito de crear algún tipo de soporte para el lenguaje, en 1996 se crea una lista pública de correos; sin embargo debido al gran éxito de R
, los creadores fueron rebasados por la continua llegada de correos.
Por esta razón, se vieron en la necesidad de crear, en 1997, dos listas de correos, a saber: R-help y R-devel, que son las que actualmente funcionan para responder las diversas dudas que los usuarios proponen en muy diversos asuntos relativos al lenguaje. Además se consolida el grupo núcleo de R (R Core Team), donde se involucran personas asociadas con S-PLUS, con la finalidad de administrar el código fuente de R. Fue hasta febrero de 29 del 2000, que se considera al software completo y lo suficientemente estable, para liberar la versión 1.0.
Ventajas de R
R
es uno de los software con mayor crecimiento en los últimos años, es utilizado principalmente en investigación y academia, sin embargo, el software se está expandiendo rápidamente al mundo empresarial.
Ranking uso de lenguajes
- Es un software libre, es decir, gratis.
- El usuario se compromete al código ético de no comercializar el software.
- Se puede modificar el código fuente a preferencia del usuario.
- Mantiene constantemente actualizado. (v4.0.1 “See Things Now” 2020/06/06)
- Funciona mediante paquetes que son trabajos colaborativos de la comunidad R. (CRAN, GitHub, Microsoft)
- La comunidad es la que ofrece la asistencia técnica. (stackOverflow, R FAQ, Nabble, R-Help)
- Existen muchos tutoriales, blogs y cursos específicos online. (RBloggers, DataCamp, Coursera)
- Alguien ya pensó e hizo lo que quisieras hacer.
Desventajas de R
- El depende de a memoria RAM.
- Requiere saber de programación para usarlo.
- La actualización de los paquetes depende de los autores.
- No todos los paquetes son de alta calidad. ¡Existen más de 12000 paquetes solo en el CRAN!.
- Tiene problemas con grandes volúmenes de datos.
Estas desventajas se convierte en oportunidades para los desarrolladores, muchos de estos problemas ya están solucionados, y siguen creciendo las nuevas propuestas.
RStudio
RStudio
es un entorno de desarrollo integrado (IDE) para el lenguaje de programación R
. Tiene una versión gratuita, más no limitada, que permite tener un entorno de trabajo más organizado y con asistencia básica.
Desarrollos vinculados con RStudio
Instalación del software
Ejemplos de uso
Nivel de habilidades en R
- Usuarios: También conocidos como UseRs, son aquellas personas familiarizadas con el lenguaje
R
, capaces de utilizar funciones, paquetes y construir gráficos. - Programadores: Son aquellos que están en capacidad de construir funciones personalizadas y paquetes básicos para la solución de problemas.
- Desarroladores: Son aquellos con competencias de alto nivel que pueden construir paquetes complejos e integración con diversas herramientas y lenguajes.
- HackRs: Son programadores de muy alto nivel, son aquellos que crean nuevas herramientas y aplicaciones que se integran con diversas herramientas, y optimizan el lenguaje.
Algoritmos
Un algoritmo es un conjunto finito de instrucciones llevan a cabo una tarea específica, si se sigue rigurosamente. Tiene las siguientes características:
- Entrada: Entran cero o más valores.
- Salida: Por lo menos produce in valor.
- Definido: Cada instrucción es clara y no ambigua.
- Finito: El algoritmo termina en un numero finito de pasos.
- Efectivo: Debe ser llevado a cabo por cualquier persona solo usando lápiz y papel.
Tipos de operaciones
- Tipos de variables
- Booleano: Solo toma valores
F
oT
(Falso o Verdadero). - Numericos: Entero, Real o Complejo.
- Alfanuméricos: Carácter o Sarta.
- Relaciones de comparación
- >: mayor qué.
- >=: mayor o igual qué.
- <: menor qué.
- <=: menor o igual qué.
- ==: igual.
- !=: diferente.
- Comparaciones lógicas
- Conjunción: &, &&
- Disyunción: |, ||
- Negación: !
- Operaciones y precedencia
- Potencia (^).
- Producto (*), división (/), división entera (%/%) y módulo (%%).
- Suma (+) y Diferencia (-).
- Relaciones de comparación.
- Conjunción y Disyunción.
- Negación
- Asignación
- Algunas funciones matemáticas
exp()
exponencial.log()
logaritmo natural (\(Ln\)).log10()
logaritmo base 10.log2()
logaritmo base 2.logb()
logaritmo base b.sqrt()
raíz cuadrada.abs()
valor absoluto.
Si existen dos operadores con la misma precedencia, se ejecuta de izquierda a derecha, pero toda precedencia se puede modificar con paréntesis.
## [1] 12.02315
## [1] 0.1018519
## [1] 638.1574
## [1] 0.0787037
## [1] 2113.579
## [1] 12.5787
Estructura de asignación
Para comentar el código o una línea específica se utiliza el carácter #
, comentar implica que no se ejecuta el código.
## [1] "¿Esto es R?"
num1 <- 3*4^2+sqrt(5) # Este comentario no evita la evaluación del código
num2 <- log(20)/abs(-10) %% 4
# num3 <- num1^num2
(operacion1 <- num1 + num2)
## [1] 51.73393
## [1] FALSE
## [1] 33.53842
## [1] TRUE
Alcance del curso
Al final del curso el estudiante tendrá un habilidad de UseR, tendrá la capacidad de manejar datos estructurados, graficar y realizar análisis estadísticos básicos. Finalmente, el estudiante estará en la capacidad de trabajar con cualquier clase de datos y transformarlos en información útil para la toma de decisiones.