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 datosay solo toma debaquellos elementos en común con la base de datosasegún la columna de enlace. Si enahay alguna fila que no tiene elemento común con la columna de enlace conb, entonces la característica que se trae debse queda como unNA.
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 datosby solo toma deaaquellos elementos en común con la base de datosbsegún la columna de enlace. Si enbhay alguna fila que no tiene elemento común con la columna de enlace cona, entonces la característica que se trae dease queda como unNA.
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
ayb. 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