Primeros Pasos

qué es todo esto?

la estructura básica de un comando de R es la aplicación de algún tipo de operación (también conocida como función) a algún objeto disponible en el environment.

Las “acciones” se escriben primero y se complementan con el/los objetos destinatarios, que se escriben dentro de un paréntesis:

acción(objeto)

cuando se ejecuta esa línea, dará un resultado.

Recordar que las operaciones deben tener cierta lógica. por ejemplo, no se puede aplicar la función para obtener una media ‘mean()’, a un objeto que sea un solo número, o peor aún, a una palabra o letra.

de este modo, tenemos que la estructura de un comando incluye una función, los elementos necesarios para ejecutarla (llamados argumentos) y sus respectivos valores.

function_name(argument1 = value1, argument2 = value2, ...)

usualmente las funciones llevan nombres que las identifican claramente (en inglés)

por ejemplo, podemos crear una secuencia de números del 5 al 15

seq(from = 5, to = 15)
 [1]  5  6  7  8  9 10 11 12 13 14 15

normalmente omitimos los nombres de los argumentos (no siempre) y podemos escribir únicamente los valores para hacer el código más legible

seq(5, 15)
 [1]  5  6  7  8  9 10 11 12 13 14 15

como habrás notado, los argumentos dentro del paréntesis siempre van separados por una coma. Esto es muy importante porque de otro modo no puede distinguir a qué te refieres cuando quieres aplicar la función

seq(5 15)

tipos de datos

no todos los datos son iguales. algunos son de tipo numérico, otros de tipo lógico, otros son texto, etc. para cada uno de ellos existe una manera de tratarlos.

números

R puede reconocer números naturales (enteros, decimales, etc.) y los puede distinguir.

integer es la denominación para números enteros

numeric para aquellos que incluyen decimales

texto

character identifica al dato tipo texto, también se los llama “strings”.

Puede componerse de una sola letra, de palabras o de textos enteros (llamados “corpus”)

lógico

logic es el tipo de dato que peude tomar valores de VERDADERO o FALSO. Usualmente son el resultado de una evaluación.

z <- 3

k <- 2+1

z == k
[1] TRUE

otros

existen otros tipos de datos, como números complejos o datos tipo fecha que no los usaremos por ahora.

jerarquía

Los tipos de datos tienen una jerarquía y siempre que sea posible R va a forzar a los datos a una jerarquía menor. Es decir, va a convertir los números en “texto” para poder tener un objeto de la misma categoría.

cómo sé qué tipo de dato es?

para saber que tipo de dato estoy utilizando puedo “preguntar” a R a qué clase pertenece el dato. por ejemplo:

class(k)
[1] "numeric"
class(z==k)
[1] "logical"

tipo de dato y tipo de variable

hay relación entre el tipo de dato en R y el tipo de variable en estadística?

dato variable
integer ?
character ?
numeric ?
logical ?

dónde están los datos?

los datos (objetos) se almacenan en la sección de environment, pero no llegan allí por arte de magia.

creación de vectores y data frames

la primera vía es crear los objetos (tabulares) a partir de vectores.

x <- seq(1,13.5, 0.5)

y <- letters

z <- rep(c(TRUE, FALSE), 13)


data.frame(x, y, z)
      x y     z
1   1.0 a  TRUE
2   1.5 b FALSE
3   2.0 c  TRUE
4   2.5 d FALSE
5   3.0 e  TRUE
6   3.5 f FALSE
7   4.0 g  TRUE
8   4.5 h FALSE
9   5.0 i  TRUE
10  5.5 j FALSE
11  6.0 k  TRUE
12  6.5 l FALSE
13  7.0 m  TRUE
14  7.5 n FALSE
15  8.0 o  TRUE
16  8.5 p FALSE
17  9.0 q  TRUE
18  9.5 r FALSE
19 10.0 s  TRUE
20 10.5 t FALSE
21 11.0 u  TRUE
22 11.5 v FALSE
23 12.0 w  TRUE
24 12.5 x FALSE
25 13.0 y  TRUE
26 13.5 z FALSE
df <- data.frame(x, y,z)

la forma de crear un vector es usando la función “combine” c()

vector <- c(1:10, "letras", TRUE)

vector
 [1] "1"      "2"      "3"      "4"      "5"      "6"      "7"      "8"     
 [9] "9"      "10"     "letras" "TRUE"  

los argumentos de la función c() se separan con comas y son los elementos del vector

cómo puedo ver un elemento específico del vector?

[ ]

vector[5]
[1] "5"

importar local

a veces tenemos el archivo de datos que queremos usar en nuestro ordenador. En ese caso, simplemente usamos la función correspondiente para importar localmente (csv, excel, dat, sav…):

#en este caso vamos a "leer" una hoja de datos de Excel

library(readxl)

descriptives <- read_excel("C:/Ususario/tu_nombre/carpeta/general_descriptives.xlsx")

descriptives

de internet

finalmente, a veces los datos se encuentran en internet. Entonces directamente pedimos a R que descargue los datos de la dirección correspondiente:

library(tidyverse)

students <- read_csv("https://pos.it/r4ds-students-csv")

students
# A tibble: 6 × 5
  `Student ID` `Full Name`      favourite.food     mealPlan            AGE  
         <dbl> <chr>            <chr>              <chr>               <chr>
1            1 Sunil Huffmann   Strawberry yoghurt Lunch only          4    
2            2 Barclay Lynn     French fries       Lunch only          5    
3            3 Jayendra Lyne    N/A                Breakfast and lunch 7    
4            4 Leon Rossini     Anchovies          Lunch only          <NA> 
5            5 Chidiegwu Dunkel Pizza              Breakfast and lunch five 
6            6 Güvenç Attila    Ice cream          Lunch only          6    

verbos

funciones

“orietado a objetos” significa que principalmente R funciona con verbos >> funciones

c()

algunas básicas:

función acción
c() combine
rm() remove
names() get names
seq() sequence
rep() replicate
help() o ? help
help(rnorm)

operadores

las funciones se complementan mejor conociendo los operadores básicos:

operador función aplicación
<- asignar objeto crear objetos
+,-, *, /, ^ operadores matemáticos básicos operaciones
>, < mayor/menor que… comprobar/filtrar elementos que cumplan la condición
==, !=, >=, <= igual a…, no es igual a…, mayor/menos o igual a… comprobar/filtrar elementos que cumplan la condición

dónde queda guardado todo?

R y RStudio genera múltiples archivos de trabajo que actúan en conjunto (.R, .RData, .Rhistory, Renviron). Además, cuando usamos conjuntos de datos que tenemos en el ordenador, R necesita saber de dónde los puede obtener…

Estos archivos se generan y almacenan automáticamente en la carpeta asignada “por defecto” >> “C:/Usuario/Documentos”.

para saber en qué carpeta estoy trabajando ahora mismo puedo “preguntar” a R con la función getwd(), que devuelve la “dirección” del directorio de trabajo (“working directory”)

no siempre quiero trabajar en la carpeta “docuementos” (hay muchas cosas allí)

para asignar una carpeta específica podemos usar la función setwd()

RStudio Projects

Para evitar confusiones y facilitar el trabajo en un solo “contexto” RStudio tiene la opción (muy muy recomendada) de crear “Proyectos”.

Se crea un archivo .RProj que asocia todos los archivos necesarios (scripts, datos, imágenes, etc.) para el trabajo a un solo proyecto y en un solo directorio. Puede ser un nuevo directorio (carpeta) o uno existente.

legos y librerías

Una forma de entender R es pensar que funciona como legos. Las funciones se aplican a objetos. R invluye muchas funciones de base, pero es imposible que incluya “todas” porque cada proyecto requiere cosas específicas (tipo de dato, tipo de test, análisis, gráficos, etc.)

Por ello, es posible “invocar” a los paquetes específicos de cosas que necesito para mi proyecto. Son como extensiones de un navegador. Son llamados “paquetes”.

paquetes

Los paquetes son extensiones específicas que contienen código, datos y documentación para su uso. Están bastante estandarizados para facilitar su uso.

Generalmente se encuentran en un repositorio centralizado (por ejemplo CRAN).

la manera de instalar y usar un paquete es mediante funciones de R:

install.packages("nombre_del_paquete")

#se conecta al respositio online y descarga el paquete en el ordenador
#el nomnbre va siempre entre comillas


#no es suficiente con tenerlo instalado en el ordenador, debemos "activarlo" en nuestro proyecto CADA VEZ que lo abrimos
library(nombre_del_paquete)

Excepto que necesitemos algo muy específico, no hace falta instalar o “activar” todos los paquetes.

Si bien los paquetes están estandarizados, es más fácil cuando están “armonizados”.

tidyverse es una colección de paquetes escenciales para el trabajo con datos. Están armonizados y usan la lógica de “verbos” para llamar a las funciones. Lo usaremos bastante.

install.packages("tidyverse")

library(tidyverse)

error 404!

Una de las habilidades más importantes en R es aprender a “leer” los errores.

La consola muestra siempre cuando hay un error (detiene la ejecución del comando) y da información del mismo.

una de las formas de “comunicarnos” con R es mediante la función help o usando el signo ‘?’ antes de la función que no conocemos.

En caso de que no podamos obtener lo que necesitamos de allí, podemos acudir a la comunidad: stack overflow, r-bloggers, etc.