14/7/2021

¿Qué es R?

  • Lenguaje de programación.
  • Ambiente de trabajo estadístico.

Objetos en R

Atómicos

  • character
  • numeric
  • integer
  • complex
  • logical

Estructuras de datos

  • vector
  • factor
  • matrix
  • list
  • data.frame

Estructura de datos

Vectores

vector númerico

  • Almacena datos númericos reales, enteros y complejos.
  • Tiene una sola dimensión.
  • Puede ser vacío y tener n cantidad de elementos.
  • Permite operar con diferentes funciones matemáticas.

Vector de caracteres

  • Almacena cadenas de texto.
  • Tiene una sola dimensión.
  • Puede ser vacío y tener n cantidad de elementos.
  • Solo permite trabajar con funciones de conteo, operadores logicos y de manipulación de texto.

Creación de vectores númericos

x <- NULL
x
## NULL
x1 <- c(1,2,3,4,5,6,7,8,9,10)
x1
##  [1]  1  2  3  4  5  6  7  8  9 10
x2 <- c(1:10)
x2
##  [1]  1  2  3  4  5  6  7  8  9 10
x3 <- seq(1,100,10)
x3
##  [1]  1 11 21 31 41 51 61 71 81 91

Creación de Vectores de caracteres

a <- NULL
a
## NULL
a1 <- c("a","b","c","d","e","f")
a1
## [1] "a" "b" "c" "d" "e" "f"
a2 <- c("Hombre","Mujer","Hombre","Hombre","Mujer","Hombre","Mujer","Mujer","Hombre")
a2
## [1] "Hombre" "Mujer"  "Hombre" "Hombre" "Mujer"  "Hombre" "Mujer"  "Mujer" 
## [9] "Hombre"

Factores

  • Almacena cadenas de textos que convierte en categorias.
  • Asigna a cada categoria un valor o marca, los cuales denomina levels
  • Permite operar y manipular datos categóricos.

Ejemplo

##  Factor w/ 2 levels "Hombre","Mujer": 1 2 1 1 2 1 2 2 1

Creación de factores

f2 <- factor(a2)
f2
## [1] Hombre Mujer  Hombre Hombre Mujer  Hombre Mujer  Mujer  Hombre
## Levels: Hombre Mujer
f3 <- factor(c(1,2,3,1,1,2,3),levels = c(1:3),
             labels = c("Independiente","Dependencia leve",
                        "Dependencia moderada"))
f3
## [1] Independiente        Dependencia leve     Dependencia moderada
## [4] Independiente        Independiente        Dependencia leve    
## [7] Dependencia moderada
## Levels: Independiente Dependencia leve Dependencia moderada
f4 <- cut(x1,breaks = c(0,3,6,8,10),
          labels = c("Primero","Segundo","Tercero","Cuarto"))
f4
##  [1] Primero Primero Primero Segundo Segundo Segundo Tercero Tercero Cuarto 
## [10] Cuarto 
## Levels: Primero Segundo Tercero Cuarto

Actividad 1

  1. Crear un vector de 20 observaciones con múltiplos de 15.
  2. Crear un vector de 10 observaciones con nombres de personas.
  3. Crear un vector de 10 observaciones con apellidos de personas.
  4. Crear un vector de 10 observaciones para la variable sexo (Hombre, Mujer)
  5. Crear un factor de 10 observaciones para la variable sexo (Hombre, Mujer)
  6. Crear un factor a partir del vector de múltiplos de 15 con las siguientes categorias: Niño (menores de 15), Adolescente (15 - 25), Adulto (25 - 60), Adulto mayor (mayores de 60)

Operaciones con vectores

Suma y resta:

x1+x2
##  [1]  2  4  6  8 10 12 14 16 18 20
x1-x2
##  [1] 0 0 0 0 0 0 0 0 0 0

Multiplicación y división:

x1*x2
##  [1]   1   4   9  16  25  36  49  64  81 100
x1/x2
##  [1] 1 1 1 1 1 1 1 1 1 1

Operaciones con factores y vectores de caracteres

Concatenar cadenas de texto

  • Concatenar dos vectores
paste(a1,a2,sep = "-")
## [1] "a-Hombre" "b-Mujer"  "c-Hombre" "d-Hombre" "e-Mujer"  "f-Hombre" "a-Mujer" 
## [8] "b-Mujer"  "c-Hombre"
  • Concatenar un vector empleando un separador en la cadena de texto
paste(a1,collapse = ",")
## [1] "a,b,c,d,e,f"

Matrices

  • Son objetos que cuentan con dos dimensiones (\(n \times m\)).
  • Pueden almacenar caracteres o datos númericos.
  • Solo puede almacenar un tipo de datos.

Matriz númerica

##      [,1] [,2] [,3] [,4]
## [1,]    1    5    9   13
## [2,]    2    6   10   14
## [3,]    3    7   11   15
## [4,]    4    8   12   16

Matriz de caracteres

##      [,1]     [,2]     [,3]    
## [1,] "Hombre" "Hombre" "Mujer" 
## [2,] "Mujer"  "Mujer"  "Mujer" 
## [3,] "Hombre" "Hombre" "Hombre"

Construcción de matrices

m1 <- x2
dim(m1) <- c(2,5)
m1
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    3    5    7    9
## [2,]    2    4    6    8   10
m2 <- matrix(x2,5,2)
m2
##      [,1] [,2]
## [1,]    1    6
## [2,]    2    7
## [3,]    3    8
## [4,]    4    9
## [5,]    5   10

Listas

  • Objeto que permite almacenar diferentes tipos de objetos.
  • No requiere que los objetos almacenados cuenten con la misma extensión o que sean de la misma clase.

Ejemplo

## $letras
## [1] "a" "b" "c" "d" "e" "f"
## 
## $numeros1
##  [1]  1  2  3  4  5  6  7  8  9 10
## 
## $sexo
## [1] "Hombre" "Mujer"  "Hombre" "Hombre" "Mujer"  "Hombre" "Mujer"  "Mujer" 
## [9] "Hombre"
## 
## $numeros2
##  [1]  1  2  3  4  5  6  7  8  9 10
## 
## $numeros3
##  [1]  1 11 21 31 41 51 61 71 81 91
## 
## $sexo_cat
## [1] Hombre Mujer  Hombre Hombre Mujer  Hombre Mujer  Mujer  Hombre
## Levels: Hombre Mujer
## 
## $independencia
## [1] Independiente        Dependencia leve     Dependencia moderada
## [4] Independiente        Independiente        Dependencia leve    
## [7] Dependencia moderada
## Levels: Independiente Dependencia leve Dependencia moderada

Clase de los objetos

class(a1)
## [1] "character"
class(a2)
## [1] "character"
class(x1)
## [1] "numeric"
class(x2)
## [1] "integer"

Clase de los objetos

class(x3)
## [1] "numeric"
class(f1)
## [1] "factor"
class(f2)
## [1] "factor"

Construcción de listas

l1 <- list(a1,x1,a2,x2,x3,f2,f3);l1
## [[1]]
## [1] "a" "b" "c" "d" "e" "f"
## 
## [[2]]
##  [1]  1  2  3  4  5  6  7  8  9 10
## 
## [[3]]
## [1] "Hombre" "Mujer"  "Hombre" "Hombre" "Mujer"  "Hombre" "Mujer"  "Mujer" 
## [9] "Hombre"
## 
## [[4]]
##  [1]  1  2  3  4  5  6  7  8  9 10
## 
## [[5]]
##  [1]  1 11 21 31 41 51 61 71 81 91
## 
## [[6]]
## [1] Hombre Mujer  Hombre Hombre Mujer  Hombre Mujer  Mujer  Hombre
## Levels: Hombre Mujer
## 
## [[7]]
## [1] Independiente        Dependencia leve     Dependencia moderada
## [4] Independiente        Independiente        Dependencia leve    
## [7] Dependencia moderada
## Levels: Independiente Dependencia leve Dependencia moderada

Construcción de listas

l1 <- list(letras = a1,numeros1=x1,sexo=a2,numeros2=x2,numeros3=x3,
           sexo_cat=f2,independencia=f3);l1
## $letras
## [1] "a" "b" "c" "d" "e" "f"
## 
## $numeros1
##  [1]  1  2  3  4  5  6  7  8  9 10
## 
## $sexo
## [1] "Hombre" "Mujer"  "Hombre" "Hombre" "Mujer"  "Hombre" "Mujer"  "Mujer" 
## [9] "Hombre"
## 
## $numeros2
##  [1]  1  2  3  4  5  6  7  8  9 10
## 
## $numeros3
##  [1]  1 11 21 31 41 51 61 71 81 91
## 
## $sexo_cat
## [1] Hombre Mujer  Hombre Hombre Mujer  Hombre Mujer  Mujer  Hombre
## Levels: Hombre Mujer
## 
## $independencia
## [1] Independiente        Dependencia leve     Dependencia moderada
## [4] Independiente        Independiente        Dependencia leve    
## [7] Dependencia moderada
## Levels: Independiente Dependencia leve Dependencia moderada

Data Frames

  • Son un tipo de lista que permite el almacenamiento de diferentes clases de objetos.
  • Requieren que todos los objetos tengan la misma extensión.
  • Es la estructura más familiar de todas pues corresponde a lo que se conoce como bases de datos.

Ejemplo de Base de Datos

Base de Datos Adultos Mayores
id barthel sexo nacimiento edad estrato
1 10 Hombre 1935-01-06 86 3
2 40 Hombre 1941-04-25 80 4
3 20 Mujer 1933-08-08 88 3
4 35 Hombre 1942-05-17 79 2
5 10 Hombre 1953-02-23 68 2
6 95 Hombre 1950-03-07 71 4

Revisión extensión de los objetos

  1. Revisar que los elementos tengan la misma longitud
length(a1)
## [1] 6
length(a2)
## [1] 9
length(x1)
## [1] 10
length(x2)
## [1] 10
length(x3)
## [1] 10

Revisión extensión de los objetos

length(f2)
## [1] 9
length(f3)
## [1] 7
length(f4)
## [1] 10
length(m1)
## [1] 10
length(m1)
## [1] 10

Construcción de Data Frames

df <- data.frame(x1,x3,f4)
df
##    x1 x3      f4
## 1   1  1 Primero
## 2   2 11 Primero
## 3   3 21 Primero
## 4   4 31 Segundo
## 5   5 41 Segundo
## 6   6 51 Segundo
## 7   7 61 Tercero
## 8   8 71 Tercero
## 9   9 81  Cuarto
## 10 10 91  Cuarto

Otras formas de obtener data.frames

Los datos que son cargados que provienen de fuentes externas a R son reconocidos por el lenguaje como Data Frames.

datos <- read.table("BD_Adultos_Mayores.txt",header = T)
head(datos)
##   id barthel   sexo nacimiento edad estrato
## 1  1      10 Hombre 1935-01-06   86       3
## 2  2      40 Hombre 1941-04-25   80       4
## 3  3      20  Mujer 1933-08-08   88       3
## 4  4      35 Hombre 1942-05-17   79       2
## 5  5      10 Hombre 1953-02-23   68       2
## 6  6      95 Hombre 1950-03-07   71       4

Actividad 2

  1. Con el vector que contiene los múltiplos de 15 crear una matriz.
  2. Almacenar en un solo objeto todos los objetos creados en la actividad 1.
  3. Elaborar un Data Frame con los objetos creados en la actividad 1.
  4. Identificar las variables contenidas en la base de datos “BD_Adultos_Mayores.txt”.
  5. Determinar la clase de cada una de las variables de la base de datos “BD_Adultos_Mayores.txt”.

Almacenamiento de fechas

  1. Existen diferentes formatos para registrar el tiempo.
  2. El tiempo fisico es diferente al tiempo en un computador.
  3. la unidad de medida del tiempo son los segundos.
  4. El tiempo en los computadores se conoce como tiempo Posix.
  5. Los computadores miden el tiempo a través de los segundos transcurridos desde la media noche del 01/01/1970.

Manejo del tiempo en R

  • Es un paquete creado con la finalidad de manejar fechas y datos de tiempo en R.
  • En todos los casos que se desee trabajar con datos de este tipo es necesario cambiar la clase de los datos.
  • Es importante identificar la manera en la que se encuentran registrados los datos.

Construcción de fechas en R

t1 <- as.Date(datos$nacimiento,format = "%y%m%d")
class(t1)
## [1] "Date"
library(lubridate)
t2 <- ymd(datos$nacimiento)
class(t2)
## [1] "Date"

Operaciones con fechas

  • Extracción de elementos de la fecha
year(t1[1])
## [1] NA
month(t1[1])
## [1] NA
day(t1[1])
## [1] NA

Operaciones con fechas

  • Diferencia de fechas
t1[2]-t1[1] #Sencilla
## Time difference of NA days
difftime(t1[2],t1[1],units = "weeks")
## Time difference of NA weeks
year(today())-year(t1[1]) #año actual - Año referencia
## [1] NA

Creación de objetos a través de una muestra

set.seed(100294)
mes <- sample(c("abril","Agosto","Septiembre"),10,replace = T)
mes
##  [1] "abril"      "abril"      "Septiembre" "abril"      "abril"     
##  [6] "abril"      "Agosto"     "Septiembre" "Septiembre" "Septiembre"
any <- sample(c(1965,1952,1948),10,replace = T)
any
##  [1] 1952 1965 1948 1965 1948 1948 1965 1965 1948 1948
dia <- sample(c(1:5),10,replace = T)
dia
##  [1] 2 5 4 2 5 5 2 2 4 1

Actividad 3

  1. Crear la secuencia de fechas correspondiente al mes de julio de 2021.
  2. Crear un vector que contenga las fechas que resultan al combinar los vectores mes, any y dia creados anteriormente.
  3. Obtenga los años transcurridos desde cada fecha hasta el día de hoy.

Taller grupo 1

  1. Crear un vector con 200 observaciones con datos entre 0 y 160 incluyendo valores decimales con nombre LDL.
  2. Crear un factor con la variable LDL con las siguientes categorias: menor a 70 Muy alto, entre 70 y 100 Alto, entre 100 y 130 Medio, entre 130 y 160 bajo.
  3. Crear un vector con los números de 1 a 200 con el nombre id.
  4. Crear un factor con con las categorias si y no con nombre detcog.
  5. Crear un vector aleatorio con números entre 0 y 5 con nombre personas.
  6. Agrupar todos los datos en un Data Frame.

Taller grupo 2

  1. Crear un vector con 100 observaciones con valores entre 0 y 100 que solo sean multiplos de 5 con nombre barthel.
  2. Crear un factor con valores “Hombre” y “Mujer”.
  3. Crear un vector de fechas comprendidas entre el 01 de enero de 1930 y el 31 de diciembre de 1960 con nombre nacimiento.
  4. Obtener un vector con los años transcurridos entre la fecha de nacimiento y la fecha actual con nombre edad.
  5. Crear un vector con valores aleatorios entre 1 y 5 con nombre estrato.
  6. Agrupar todos los datos en un Data Frame.

Gracias