Introducción a R

R es un lenguaje de programación orientado al análisis estadístico, la manipulación de datos y la visualización.

En esta primera sesión aprenderemos a:

  1. utilizar R como calculadora;
  2. crear objetos;
  3. crear vectores;
  4. aplicar funciones;
  5. calcular estadísticas básicas;
  6. realizar gráficos simples.

1. R como calculadora

Podemos utilizar R directamente para efectuar operaciones matemáticas.

2 + 2
## [1] 4
10 - 4
## [1] 6
5 * 3
## [1] 15
10 / 2
## [1] 5
2^3
## [1] 8
sqrt(25)
## [1] 5

Por ejemplo,

\[ \frac{10+5}{3}=5. \]

En R:

(10 + 5) / 3
## [1] 5

2. Crear objetos

Uno de los conceptos fundamentales de R es el objeto.

Utilizamos el operador <- para guardar información.

x <- 10

Podemos visualizar el contenido del objeto:

x
## [1] 10

Y utilizarlo en operaciones:

x + 5
## [1] 15
x * 2
## [1] 20
x^2
## [1] 100
sqrt(x)
## [1] 3.162278

La lógica es:

\[ \text{valor} \longrightarrow \text{objeto} \longrightarrow \text{operación} \]


3. Vectores

Un vector permite almacenar varias observaciones.

Supongamos las edades de cinco estudiantes:

edad <- c(18, 20, 21, 19, 22)

edad
## [1] 18 20 21 19 22

La función c() significa combinar.

El vector contiene:

\[ \mathbf{x}= (18,20,21,19,22) \]


4. Operaciones con vectores

R permite realizar operaciones directamente sobre todos los elementos de un vector.

edad + 1
## [1] 19 21 22 20 23

También podemos escribir:

edad * 2
## [1] 36 40 42 38 44
edad^2
## [1] 324 400 441 361 484
sqrt(edad)
## [1] 4.242641 4.472136 4.582576 4.358899 4.690416

Por ejemplo,

\[ x_i^*=x_i+1. \]

R aplica esta transformación a cada elemento del vector.


5. Seleccionar observaciones

Los corchetes [ ] permiten seleccionar posiciones.

Primera observación:

edad[1]
## [1] 18

Tercera observación:

edad[3]
## [1] 21

Varias observaciones:

edad[c(1, 3, 5)]
## [1] 18 21 22

6. Operadores lógicos

Podemos preguntar qué valores cumplen una condición.

edad > 20
## [1] FALSE FALSE  TRUE FALSE  TRUE

R devuelve:

FALSE FALSE TRUE FALSE TRUE

Podemos utilizar esa condición para seleccionar datos:

edad[edad > 20]
## [1] 21 22

La expresión significa:

seleccionar las edades para las cuales edad es mayor que 20.


7. Funciones básicas

Una función tiene la estructura general:

funcion(argumento)

Por ejemplo:

mean(edad)
## [1] 20

calcula la media:

\[ \bar{x} = \frac{1}{n} \sum_{i=1}^{n}x_i. \]

Otras funciones importantes son:

sum(edad)
## [1] 100
length(edad)
## [1] 5
min(edad)
## [1] 18
max(edad)
## [1] 22
median(edad)
## [1] 20
var(edad)
## [1] 2.5
sd(edad)
## [1] 1.581139

8. Crear una base de datos

Creamos tres vectores:

nombre <- c("Ana", "Luis", "Pedro", "Sofia", "Juan")

edad <- c(18, 20, 21, 19, 22)

nota <- c(5.5, 4.8, 6.1, 5.9, 4.2)

Ahora los combinamos mediante data.frame():

datos <- data.frame(
  nombre = nombre,
  edad = edad,
  nota = nota
)

datos
##   nombre edad nota
## 1    Ana   18  5.5
## 2   Luis   20  4.8
## 3  Pedro   21  6.1
## 4  Sofia   19  5.9
## 5   Juan   22  4.2

Conceptualmente:

nombre edad nota
Ana 18 5.5
Luis 20 4.8
Pedro 21 6.1
Sofia 19 5.9
Juan 22 4.2

Una fila representa una observación y una columna representa una variable.


9. Acceder a una variable

Para seleccionar una columna utilizamos $.

datos$edad
## [1] 18 20 21 19 22

Podemos aplicar funciones sobre ella:

mean(datos$edad)
## [1] 20
mean(datos$nota)
## [1] 5.3
sd(datos$nota)
## [1] 0.7905694

10. Inspeccionar una base de datos

Algunas funciones fundamentales son:

head(datos)
##   nombre edad nota
## 1    Ana   18  5.5
## 2   Luis   20  4.8
## 3  Pedro   21  6.1
## 4  Sofia   19  5.9
## 5   Juan   22  4.2
str(datos)
## 'data.frame':    5 obs. of  3 variables:
##  $ nombre: chr  "Ana" "Luis" "Pedro" "Sofia" ...
##  $ edad  : num  18 20 21 19 22
##  $ nota  : num  5.5 4.8 6.1 5.9 4.2
summary(datos)
##     nombre               edad         nota    
##  Length:5           Min.   :18   Min.   :4.2  
##  Class :character   1st Qu.:19   1st Qu.:4.8  
##  Mode  :character   Median :20   Median :5.5  
##                     Mean   :20   Mean   :5.3  
##                     3rd Qu.:21   3rd Qu.:5.9  
##                     Max.   :22   Max.   :6.1
dim(datos)
## [1] 5 3
names(datos)
## [1] "nombre" "edad"   "nota"

Estas funciones responden distintas preguntas:

Función Utilidad
head() primeras observaciones
str() estructura de los datos
summary() resumen estadístico
dim() filas y columnas
names() nombres de las variables

11. Primer gráfico

Podemos utilizar las funciones gráficas incorporadas en R.

Histograma

hist(datos$nota)

Diagrama de caja

boxplot(datos$nota)

Diagrama de dispersión

plot(datos$edad, datos$nota)

El último gráfico representa la relación:

\[ \text{Edad} \longrightarrow \text{Nota}. \]


12. Ejercicio

Construya el siguiente vector:

peso <- c(65, 72, 68, 80, 75, 69, 71)

Calcule:

  1. número de observaciones;
  2. media;
  3. mediana;
  4. mínimo;
  5. máximo;
  6. varianza;
  7. desviación estándar.

Finalmente, construya:

hist(peso)

boxplot(peso)


Resumen

En esta sesión utilizamos:

mean(edad)             # media
## [1] 20
median(edad)           # mediana
## [1] 20
var(edad)              # varianza
## [1] 2.5
sd(edad)               # desviación estándar
## [1] 1.581139
min(edad)              # mínimo
## [1] 18
max(edad)              # máximo
## [1] 22
length(edad)           # número de elementos
## [1] 5
data.frame(edad)     # crear una base de datos
##   edad
## 1   18
## 2   20
## 3   21
## 4   19
## 5   22
head(edad)         # primeras filas
## [1] 18 20 21 19 22
str(edad)          # estructura
##  num [1:5] 18 20 21 19 22
summary(edad)      # resumen estadístico
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##      18      19      20      20      21      22
hist(edad)             # histograma

boxplot(edad)          # diagrama de caja

plot(edad)          # gráfico de dispersión

La secuencia fundamental es:

\[ \boxed{ \text{crear} \rightarrow \text{observar} \rightarrow \text{seleccionar} \rightarrow \text{calcular} \rightarrow \text{graficar} } \]

output: html_document: self_contained: true code_folding: show toc: true toc_float: true