Bienvenidos al curso de R para principiantes. El objetivo de este curso es que puedan tomar conocimiento de los aspectos básicos para comenzar a trabajar con este lenguaje, sin enfocarnos en un primer momento en ningún tema en particular. Ya una vez tengamos manejo de los temas esenciales de R podremos comenzar a realizar cosas increíbles. Algunos puntos que tengo en mente para realizar tutoriales en el futuro son modelos predictivos (machine learning), generación de clústers (clustering), análisis estadísticos, visualización de datos y mucho más. Pero por el momento comencemos con lo básico.

 

R para principiantes

 

Entonces, ¿Por qué debería comenzar aprender R? Si bien hay otros lenguajes y entornos de programación dedicados a los mismos temas ahí fuera, R le saca ventaja a todos estos. Algunas de las razones por la que afirmo esto son que R es gratuito (se distribuye bajo licencia GNU GPL) y cuenta con una inmensa comunidad detrás que le da soporte y muy buena documentación. A su vez, esto hace que continuamente aparezcan nuevos paquetes que amplían su funcionalidad. Y lo mejor de todo es que, a pesar que se suela decir lo contrario, es simple de aprender y muy entretenido.

Y si aún no te convenzo, pásate por el siguiente enlace sobre las tecnologías mejor pagas del mercado y luego me cuentas.

 

Introducción


R fue desarrollado a principios de los años ’90 por Ross Ihaka y Robert Gentleman (Universidad de Auckland) como una extensión de un lenguaje llamado S, al que se le agregaron capacidades para ser empleado en estadística. De esta forma, siendo que R es un derivado de S (surgido a fines de los ‘70) se puede decir que es un lenguaje bastante viejo, lo cual se plasma en algunos aspecto que veremos a medida que vayamos usándolo.

Actualmente, su desarrollo es responsabilidad del R Development Core Team, siendo la versión actual con la que trabajaré la 3.2.3.

Si quieren informarse más acerca de R y su historia pasense el siguiente enlace, no obstante, para nosotros nos basta con esto.

 

Instalación


Entonces, lo primero es lo primero. Debemos dejar el equipo listo para comenzar a trabajar. Para esto nos vamos a https://www.r-project.org/ y desde ahí a Download / CRAN. Seleccionamos la distribución para nuestro sistema operativo, la descargamos y por último la instalamos. Simple.

 

cap1

 

R traer por defecto un entorno de desarrollo llamado a R-commander, del cual a mi juicio es mejor olvidarse. En cambio, vamos a utilizar RStudio. Para instalarlo nos dirigimos a https://www.rstudio.com/products/RStudio, descargamos la versión para escritorio y la instalamos.

 

cap2

 

Y ya tenemos preparado nuestro entorno de trabajo para comenzar a trabajar. Así de simple.

 

Entorno de trabajo


Una vez abierto RStudio, nos encontramos con la zona de trabajo, compuesta por 4 áreas principales:

  • (1) El editor de texto
  • (2) La consola, donde se irán ingresando comandos
  • (3) El área de trabajo (enviaroment) y el historial de comandos (History)
  • (4) El directorio de trabajo, los plots que realicemos, los paquetes que carguemos, la ayuda y un visor.

 

curso-r_cap3

 

Para comenzar a ver un poco mejor esto, creemos algunas variables. Como R es un lenguaje interpretado, a medida que ingresemos comando en la consola y le demos enter, estos se irán ejecutando. Es decir, no hay necesidad de compilar nada, lo cual hace que manejarse en R sea bastante dinámico al momento de trabajar.

Dicho esto, lo primero es ver como se asignar valores a variables. Para esto existe dos métodos. El primero es utilizando el operador <-, mientras que el segundo es con =. En general las guías de estilo sugieren utilizar el primero para la asignación de valores a variables, mientras que el segundo se reserva para la asignación de valores a argumentos en funciones. En este blog utilizo la guía de estilo propuesta por Google para trabajar. Esta la pueden ver acá: Google’s R Style Guide.

x <- 1
x
[1] 1

s <- "hola"
s
[1] "hola"

y <- c(1,3,2,4)
y
[1] 1 3 2 4

Una vez creadas las variables, estas aparecen en el entorno de trabajo:

 

curso-r_cap4

 

En el siguiente post ya comenzaremos a ver más a fondo los tipos y estructuras de datos y cómo asignarles valores. Por ahora dejemoslo acá.

A su vez, mas allá de la necesidad de poder asignar datos manualmente a variables, lo más usual es obtener los datos con que se va a trabajar desde fuera de R. Veamos un ejemplo. Carguemos un archivo CSV, para lo cual utilizamos la función read.table:

t <- read.table(file = ..., header = TRUE, sep = ",")

Un punto importante a tener en cuanta es que R almacena el entornos de trabajo en memoria activa (memoria RAM), por lo cual tenemos que estar atentos a la disponibilidad de memoria con que contamos. La cantidad de memoria que ocupa cada objeto se puede ver en el área de trabajo, o usar alguna función como object.size:

object.size(s)
# 96 bytes

object.size(x)
# 48 bytes
object.size(y)
# 72 bytes
format(object.size(t), units = "auto")
# "75.8 Mb"

En este último caso, hemos combinado la función object.size con la función format. En este punto quizás se pregunten como es que sé que puedo combinar ambas funciones para modificar la salida de la primera. La respuesta es simple: he mirado la documentación de la función object.size, y dentro de esta se explica lo que he hecho. Leer la documentación de las funciones que utilicemos es algo importantísimo. Cómo hacer esto lo veremos en la siguiente sección.

Continuando, para poder explorar las variables que hayamos cargado tenemos una sería de funciones que presentamos ahora, y que iremos usando a lo largo del curso:

ls() # Muestra las variables cargadas en el entorno de trabajo
[1] "s" "t" "x" "y"

head(t)# Imprime los primeros 6 elementos de la variable que indiquemos. Si 
         agregamos el argumento n = N podemos hacer que se muestren los 
         primeros N elementos de la variable.
#                 fecha                         cliente producto precio
# 1 03/06/2008 00:05:44 8034dd89aa255e076be42ff87665a72b       E      3
# 2 03/06/2008 00:06:47 9a7c801fb29330b3e8d7dbe5ec4805a1       B     12
# 3 03/06/2008 00:09:16 7026f1a04128fb4541aa5bdd409b4d37       B     15
# 4 03/06/2008 00:10:22 def679eb50db52f66ad3b6e84728024c       E      3 
# 5 03/06/2008 00:10:34 1a99ffb6f019163213d269b9b4249a4a       A      3
# 6 03/06/2008 00:10:34 298b548f62ebc5f8f48054d4be78b607       E      3

# tail(t) # Hace lo mismo que head() pero con los últimos elementos.
str(t) # Muestra la estructura de la variable. 
# 'data.frame': 1103615 obs. of 4 variables:
# $ fecha: Factor w/ 457644 levels "01/07/2008 00:01:10",..: 23474 23475 23476 23477 23478 23478 23479 23480 23481 23481 ...
# $ cliente : Factor w/ 262299 levels "000005977a868020fcca9f32e44ad0a2",..: 131439 158597 115022 228722 27224 42565 101363 61585 240792 87661 ...
# $ producto: Factor w/ 6 levels "A","B","C","D",..: 5 2 2 5 1 5 5 2 5 1 ...
# $ precio : int 3 12 15 3 3 3 3 2 3 3 ...

summary(t) # Muestra un resumen de la la variable. En este caso tenemos que 
             la variable es un tabla (dataframe, lo veremos mas adelante) por 
             lo que se muestra un resumen de cada columna
# fecha cliente producto precio 
# 08/06/2008 17:23:48: 19       a1ce93ccad5e4a78a7cf2f00cba7219f: 47      A:473439    Min. : 2.00 
# 08/06/2008 16:58:49: 18       8d8235de8f0bd9119932c43fedd48310: 29      B: 45245    1st Qu.: 9.00 
# 08/06/2008 17:01:49: 18       2c5306a3969cb2dad1ea48896fe17d6f: 27      C: 28552    Median :15.00 
# 08/06/2008 17:06:53: 18       d5c41d6e5b12ce4144e3d1520d527415: 26      D: 83185    Mean :11.83 
# 08/06/2008 17:18:50: 18       f1a80222bbca04d591946e03074e7631: 26      E:473183    3rd Qu.:15.00 
# 08/06/2008 16:19:52: 17       1f30febab5f5c69806120a727a93875b: 25      X: 11       Max. :16.00 
# (Other)              :1103507 (Other)                         : 1103435

 

Documentación de las funciones


Mencionamos en la sección anterior lo importante que es utilizar la documentación presente en R. Para acceder a la documentación de cada función simplemente usamos ?funcion:

?object.size

y luego de ingresar este comando, en la solapa help se nos muestra la documentación:

 

curso-r_cap5

 

El esquema de la documentación sigue un formato estándar:

  • Description: descripción breve.
  • Usage: para una función, proporciona el nombre de la misma con todos sus argumentos y los posibles valores por defecto (opciones); para un operador describe su uso típico.
  • Arguments: para una función, describe en detalle cada uno de sus argumentos.
  • Details: descripción detallada.
  • Value: si se aplica, el tipo de objeto retornado por la función o el operador.
  • See Also: otras páginas de ayuda con funciones u operadores similares.
  • Examples: algunos ejemplos que generalmente pueden ser ejecutados sin abrir la ayuda con la función examples().

 

Instalación y carga de paquetes


Lo último que veremos en este post es como instalar y cargar paquetes. Cuando iniciamos R, este se carga con lo que se llama paquete base, el cual contiene las funciones propias de R. No obstante, R cuenta con una comunidad de colaboradores inmensa, la cual provee de cientos de paquetes con nuevas funciones, tipos de datos, etc. que amplían enormemente sus capacidades. Entonces, veamos como instalar estos paquetes y luego cargarlos.

Para instalar paquetes el comando que se utiliza es:

install.packages("nuevo_paquete")

o podemos ir a Tools -> Install Package y hacer lo propio.

Y luego, para cargar paquete usamos:

library(paquete_a_cargar)

Con esto ya podemos instalar y cargar los paquetes que deseemos. A lo largo de los próximos post iremos explorando una gran cantidad de paquetes, por lo que haremos amplio uso de estos comando.

 

Video


Comentarios

5 Comments

  1. César

    Interesante tu explicación , soy ingeniero de sistemas y estoy iniciando con el tema de análisis de datos, espero sigas agregando más material a tu pagina.

    Reply
    • Mauricio

      Gracias César! Me alegra que haya gente que se interese por estos temas. Cualquier cosa en que pueda a ayudarte me dices 🙂 .

      Reply
  2. Roberto

    Muy interesante el post. ¿Para cuando se vienen los poximos?

    Reply
    • Mauricio

      Hola Roberto, me alegro que te haya resultado interesante el post! Te comento que mi idea es ir subiendo un nuevo post cada semana. Te invito a que te suscribas de modo que una vez al mes te estaré enviando un resumen del contenido que vaya subiendo al blog. 🙂
      Saludos! Mauricio

      Reply

Submit a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.