Talleres del capítulo once

Curso de Modelos Jerárquicos, Universidad Nacional de Colombia

# Lectura de librerías
library(tidyverse)
library(magrittr)

Introducción

Esn este documento se aborda la solución de los talleres asociados al capítulo once del libro “Data Analysis Using Regression and Multilevel/Hierarchical Models” de Andrew JGelman y Jennifer Hill, los cules fueron estudiados en las semanas seis y siete del curso Modelos Jerárquicos del pregrado de Estadística de la Universidad Nacional de Colombia, sede Medellín.

Se debe tener en cuenta que al tratarse de un documento de ejercitación, entonces los códigos serán visibles en este documento. Además, en algunos casos, para evitar que el documento se extienda innecesariamente, se omite la salida de la ejecución de algunos chunks de código.

Parte uno

Los enunciados asociados a las actividades que se desarrollarán enseguida se pueden hallar haciendo clic aquí

Punto uno

Se procede con la construcción de las bases de datos requeridas.

# Base de datos uno ===========================================================

# Columnas
x1 <- c('A', 'B', 'C')
x2 <- 1:3

# Base de datos
a <- data.frame(x1, x2)
a
##   x1 x2
## 1  A  1
## 2  B  2
## 3  C  3
# Base de datos dos ===========================================================

# Borrado de la información de x1 previa
rm(x1)

# Columnas
x1 <- c('A', 'B', 'D')
x3 <- c(TRUE, FALSE, TRUE)

# Base de datos
b <- data.frame(x1, x3)
b
##   x1    x3
## 1  A  TRUE
## 2  B FALSE
## 3  D  TRUE

Como se ve, se consiguen las bases de datos deseadas.

Punto dos

Se va a proceder con la construcción de las bases de datos que se quieren.

  • Complemento de b - a. Esta base de datos va a tener todos los elementos de la base de datos a y solo toma de b aquellos elementos en común con la base de datos a según la columna de enlace. Si en a hay alguna fila que no tiene elemento común con la columna de enlace con b, entonces la característica que se trae de b se queda como un NA.
complemento_b_a <- left_join(x = a, y = b, by = 'x1')
complemento_b_a
##   x1 x2    x3
## 1  A  1  TRUE
## 2  B  2 FALSE
## 3  C  3    NA
  • Complemento de a - b. Esta base de datos va a tener todos los elementos de la base de datos b y solo toma de a aquellos elementos en común con la base de datos b según la columna de enlace. Si en b hay alguna fila que no tiene elemento común con la columna de enlace con a, entonces la característica que se trae de a se queda como un NA.
complemento_a_b <- right_join(x = a, y = b, by = 'x1')
complemento_a_b
##   x1 x2    x3
## 1  A  1  TRUE
## 2  B  2 FALSE
## 3  D NA  TRUE
  • Intersección de a y b. Solo se toman aquellos elementos para los cuales se tienen datos completos para todas las observaciones comunes para ambas bases de datos de acuerdo con la columna de enlace.
interseccion <- inner_join(x = a, y = b, by  = 'x1')
interseccion
##   x1 x2    x3
## 1  A  1  TRUE
## 2  B  2 FALSE
  • Unión. Se toman todos los elementos de las dos bases de datos y se le asignan a los valores faltantes NA.
union <- full_join(x = a, y = b, by = 'x1')
union
##   x1 x2    x3
## 1  A  1  TRUE
## 2  B  2 FALSE
## 3  C  3    NA
## 4  D NA  TRUE

Punto tres

En el contexto de la programación, una cheat sheet, que se traduciría literalmente como hoja de engaño es lo que se conoce coloquialmente como pastel en Antioquia o chuleta en España. Son documentos de una o dos hojas por lo general con claves de algún paquete o módulo que explica de forma sucinta como usar algunas de las funciones o métodos más importantes.

Punto cuatro

El cheat sheet del paquete dplyr puede ser encontrado en el siguiente enlace: clic aquí

Punto cinco

Al nombrar cada una de las posibles bases de datos en el punto dos, se obtuvieron también dichos marcos de datos en R.

Punto seis

A continuación se van a crear las bases de datos con las cuales se van a hacer los ejercicios de práctica.

# Borrado de los datos

rm(list = ls())

# Base de datos uno

A <- c('a', 'b', 'c')
B <- c('t', 'u', 'v')
C <- 1:3

bd1 <- data.frame(A, B, C)
bd1
##   A B C
## 1 a t 1
## 2 b u 2
## 3 c v 3
# Base de datos dos

rm(A); rm(B); rm(C)

A <- c('b', 'c', 'd')
B <- c('u', 'v', 'w')
D <- 3:1

bd2 <- data.frame(A, B, D)
bd2
##   A B D
## 1 b u 3
## 2 c v 2
## 3 d w 1
  • Primer base de datos presentada.
bd3 <- left_join(bd1, bd2, by = c('A', 'B'))
bd3
##   A B C  D
## 1 a t 1 NA
## 2 b u 2  3
## 3 c v 3  2
  • Segunda base de datos
bd4 <- right_join(bd1, bd2, by = c('A', 'B'))
bd4
##   A B  C D
## 1 b u  2 3
## 2 c v  3 2
## 3 d w NA 1
  • Elementos comunes
bd5 <- inner_join(bd1, bd2, by = c('A', 'B'))
bd5
##   A B C D
## 1 b u 2 3
## 2 c v 3 2