1  Primeros pasos en R

Autor/a

Carrasco Escobar, Gabriel

1.1 R y RStudio

R (R Core Team 2021) es un software de código libre y multiplataforma para cómputo estadístico y gráficos. Es popular desde el 2010, pero empezó en 1993 como una implementación del lenguaje de programación S (John Chambers, Bell laboratories, 1976). R fue escrito originalmente por Ross Ihaka y Robert Gentleman en la Universidad de Auckland. Básicamente es un lenguaje de programación desarrollado y mantenido de forma activa por su comunidad. Contiene muchos procedimientos estadísticos comunes e implementaciones de muchos campos en particular.

Por otro lado, es más lento y tiene un mayor consumo de memoria que otros lenguajes de programación más tradicionales (C, Java, PErl, Python). Sin embargo, es más flexible y tiene una librería extensa de paquetes.

RStudio (RStudio Team 2022) es la interfaz de usuario (IDE) más usada para R. Permite interactuar con los elementos, la codificación y las salidas del programa. No es una interfaz en base a selección de opciones en un menú aunque tiene algunas extensiones como Jamovi, Rcmdr (Fox y Bouchet-Valat 2021) y Radiant (Nijs 2022).

1.2 Entorno básico

El entorno inicial de RStudio consiste en 4 paneles:

  • Editor (Soruce): Donde podemos escribir nuestros códigos en scripts
  • Consola (Console): Donde se conecta RStudio con R.
  • Entorno (Environment): Donde podemos explorar los elementos que hemos cargado en R. En este panel también podemos visualizar la historia de códigos y conexiones entre otros.
  • Salidas (Files): Donde podemos ver los gráficos y otras salidas de nuestro código. También hay pestañas para ver los archivos, los paquetes, la ayuda de funciones y visor de otros elementos web.

1.3 Proyectos de RStudio

Podemos empezar a usar R directamente pero una buena práctica es empezar creando un proyecto. Los proyectos permiten:

  • Organizar tu trabajo.
  • Manejar los directorios de trabajo (lo discutiremos posteriormente).
  • Conocer fácilmente en qué proyecto estamos trabajando.

Para crear una proyecto iremos a File > New Project > New Directory > Create New Project:

Podemos ponerle de nombre “r4pubh”, por ejemplo.

Si se va trabajar con el contenido de este libro, es importante y muy recomendado crear el proyecto en una carpeta de trabajo exclusiva para este propósito. Además, los datos que se usan en el libro deberían estar en esta misma carpeta, junto con el proyecto y dentro de una sub-carpeta llamada data. En el capítulo de Pre-requisitos se detallan los pasos para descargar los conjuntos de datos del libro.

1.4 Códigos en R

Lo que se busca en ciencia de datos es que nuestros procesos sean reproducibles. Para esto almacenaremos y anotaremos nuestro código en el panel Editor de RStudio. El principal público objetivo de nuestro código somos nosotros mismos en el futuro. Es por ello que nuestro código debe estar estructurado y anotado (“documentado”) de tal manera que nosotros podamos leerlo y entenderlo incluso si lo volvemos a abrir en el futuro lejano. Si esto se cumple, compartirlo con nuestros pares o la comunidad en general será sencillo.

Recordar que como analistas nuestro trabajo es la generación del código. Los gráficos, tablas y otras salidas son sub-productos de nuestro código y no al revés.

Otro punto importante al momento de guardar nuestro código y compartirlo con otras personas, equipos o analistas es la codificación de caracteres del sistema operativo en el que nos encontramos. La codificación le permitirá al sistema interpretar caracteres como “ñ” o “tílde” adecuadamente. La mayoría de sistemas operativos con Windows tienen codificaciones en función de la configuración regional en la que se encuentre instalado. En sistemas en español latinoamericano, la codificación más frecuente será ISO-8859-1, mientras que sistemas como MacOS o distribuciones GNU/Linux usan la codificación estándar internacional UTF-8. Para hacer esta adaptación en nuestro entorno de Rstudio seguiremos los siguientes pasos en Tools > Global Options > Code > Saving > Default text encoding > Change > UTF-8 :

En R hay varios formatos para almacenar nuestras “rutinas” de códigos. El formato básico se llama script y es un archivo con extensión .R. Este formato permite escribir los códigos en R en su formato primitivo y compartirlo como si fuera un bloc de notas.

Nota

En este libro se explorarán otros formatos como Quarto o R Markdown (Allaire et al. 2021). Ambos son formato dinámicos que permiten juntar código en R con lenguaje en texto plano. Un documento elaborado con Quarto o R Markdown puede ser exportado en múltiples formatos como HTML, PDF, PPT, etc., e incluso es la base para la creación de este libro. Se recomienda revisar los manuales de Quarto y R Markdown.

1.5 Funcionamiento básico

La consola de RStudio es el área de trabajo en donde se ejecutan operaciones, funciones y códigos con R.

Por ejemplo, podemos utilizarlo para llevar a cabo operaciones aritméticas como:

  • Multiplicaciones
10 * 10
[1] 100
  • Divisiones
420 / 30
[1] 14

Así como crear vectores (secuencias ordenadas de elementos de un mismo tipo):

  • Secuencia ordenada de elementos numéricos
1:10
 [1]  1  2  3  4  5  6  7  8  9 10
  • Secuencia ordenada de elementos de texto
c("Juan", "Carlos", "Gabriel")
[1] "Juan"    "Carlos"  "Gabriel"

1.6 Objetos

Un objeto es una estructura que almacena las características y datos que se le asigne. A continuación, generaremos un vector con números enteros del 1 al 10.

1:10
 [1]  1  2  3  4  5  6  7  8  9 10

Ahora, asignamos (<-) este vector a un objeto al cual llamaremos x.

x <- 1:10

Para confirmar que el objeto x almacena el vector 1:10, lo llamamos colocando el nombre del objeto en la consola.

x
 [1]  1  2  3  4  5  6  7  8  9 10

Del mismo modo, podemos asignar un conjunto de valores no numéricos a un objeto. Asignaremos los nombres Juan, Carlos y Gabriel al objeto “amigos”.

amigos <- c("Juan", "Carlos", "Gabriel")
amigos
[1] "Juan"    "Carlos"  "Gabriel"

1.7 Funciones

Las funciones son operaciones o procedimientos desarrollados por la comunidad de R. Por ejemplo, la función rnorm() nos permite generar una muestra de números racionales aleatorios con distribución normal.

Utilizando esta función, asignaremos 10 números generados aleatoriamente al objeto y.

y <- rnorm(10)
y
 [1] -0.7507678 -1.8752238 -0.4353759  1.2467826 -0.5076410 -1.6197791
 [7] -0.3723623 -0.8388747  2.9059807  0.8861151

Ahora, utilizando ambos objetos antes creados (x e y), usaremos la función plot() para graficar los datos.

plot(x, y)

Agregando el argumento col = "color" podemos modificar el color del gráfico especificando el color dentro de dobles comillas. En el ejemplo a continuación, colocamos el color blueviolet.

plot(x, y, col = "blueviolet")

En este documento elaborado por Zheng (2021) se puede encontrar una lista de colores disponibles en R.

Para revisar mayor detalles de las funciones utilizar el panel de ayuda (help) o el comando ? antes del nombre de la función.

?rnorm

1.8 Tipo de datos en R

Existen cuatro tipos de objetos básicos en R.

1.8.1 Vector

Serie de elementos del mismo tipo (una dimensión).

vector <- seq(1, 100, by = 3)
vector
 [1]   1   4   7  10  13  16  19  22  25  28  31  34  37  40  43  46  49  52  55
[20]  58  61  64  67  70  73  76  79  82  85  88  91  94  97 100

1.8.2 Lista

Contiene una selección de objetos heterogéneos.

lista <- list(name = "Mike", gender = "M", company = "ProgramCreek")
lista
$name
[1] "Mike"

$gender
[1] "M"

$company
[1] "ProgramCreek"

1.8.3 Matriz

Extensión de vectores de dos o más dimensiones.

mat <- rbind(c(1,2,3), c(4,5,6))
mat
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

1.8.4 Data Frame

Una matriz con nombres de columnas (variables), en la que se pueden incluir variables numéricas y no numéricas.

df <- data.frame(numeros = c(1,2,3,4,5), letras = c("v", "w", "x", "y", "z"))
df
  numeros letras
1       1      v
2       2      w
3       3      x
4       4      y
5       5      z

1.9 Identificación de objetos

La función class() nos permite identificar el tipo de dato de un objeto.

  • df es un objeto de tipo data.frame
  • mat es un objeto de tipo matrix
  • lista es un objeto de tipo list
class(df)
[1] "data.frame"
class(mat)
[1] "matrix" "array" 
class(lista)
[1] "list"

1.10 Referencia de elementos

Podemos identificar o localizar los elementos de un data.frame de la siguiente forma:

Referencia de filas

df[1, ]
  numeros letras
1       1      v

Referencia de columnas

df[, 2]
[1] "v" "w" "x" "y" "z"

Referencia de variables

df$numeros
[1] 1 2 3 4 5

Referencia a la fila de una variables

df$numeros[2]
[1] 2
df$letras[4]
[1] "y"

Referencia a un resultado dependiendo de otra variable

df$letras[df$numeros == 2]
[1] "w"
df$numeros[df$letras == "z"]
[1] 5

1.11 Importación de datos

La importación de datos puede ser realizada de tres formas distintas. Para este ejemplo usaremos los archivos de datos who.csv y covid19-per.csv. Ambos serán almacenados dentro de los objetos who y covid respectivamente.

1.- Menú: En la barra superior, entrando a File > Import Dataset y seleccionando el tipo de archivo a instalar.

2.- Selector: Utilizando comandos nativos y selección de archivo con file.choose().

Se abrirá una ventana del explorador de archivos de su computadora.

3.- Ruta: Utilizando comandos nativos y path con read.csv.

who <- read.csv("data/who.csv")
covid <- read.csv("data/covid19-per.csv") 

El path puede ser completado automáticamente por RStudio al usar TAB.

1.12 Inspección de datos

Para visualizar parte de la tabla importada en R, utilizamos la función head o tail.

head(covid)
date REGION new_cases
3/6/20 AMAZONAS 0
3/7/20 AMAZONAS 0
3/8/20 AMAZONAS 0
3/9/20 AMAZONAS 0
3/10/20 AMAZONAS 0
3/11/20 AMAZONAS 0
tail(covid)
date REGION new_cases
4845 9/10/20 UCAYALI 36
4846 9/11/20 UCAYALI 115
4847 9/12/20 UCAYALI 31
4848 9/13/20 UCAYALI 17
4849 9/14/20 UCAYALI 61
4850 9/15/20 UCAYALI 52

Para visualizar todos los datos de la tabla importada en R, utilizamos la función View.

View(who)

1.13 Ejercicios

Ejercicio 1

Crear un nuevo proyecto de R. No incluir espacios en blanco en el nombre, utilizar guiones (-) o guiones bajos (_) si se quieren separar palabras. Por ejemplo: nuevo-proyecto o nuevo_proyecto.

Ejercicio 2

En el directorio del proyecto creado en el ejercicio anterior, crear un script de R usando las mismas recomendaciones de nombrado. En este archivo agregar los comandos para:

  1. Importar el archivo de datos lead.csv que se encuentra en la carpeta data.
  2. Crear objetos con las variables de este conjunto de datos. Ejemplo obj1 <- data$var1
  3. Usar la función summary de R para describir los objetos creados anteriormente.
  4. Identificar la clase de los objetos creados anteriormente.
  5. Utilizar la función plot() para hacer un gráfico de alguna de las variables.