knitr::opts_chunk$set(echo = FALSE)

library(learnr)
library(dplyr)
library(tidyr)
library(lubridate)
library(readr)
library(readxl)
library(tibble)
library(gradethis)
tutorial_options(exercise.checker = gradethis::grade_learnr)

directores <- tibble(   
    director =  c("Spielberg",
                  "Scorsese",
                  "Hitchcock",
                  "Tarantino",
                  "Polanski"),
    nacionalidad = c("EEUU",
                     "EEUU",
                     "RU",
                     "EEUU",
                     "POL"))

peliculas <- tibble(    
    director = c("Spielberg",
                    "Scorsese",
                "Hitchcock",
                "Hitchcock",
                "Spielberg",
                "Tarantino",
                "Polanski"),
    pelicula = c("Super 8",
                    "Taxi Driver",
                    "Psycho",
                    "North by Northwest",
                    "Catch Me If You Can",
                    "Reservoir Dogs",
                    "Chinatown"))

premios <- tibble(
  pelicula = c("Catch Me If You Can",
               "Super 8",
               "North by Northwest",
                   "Chinatown",
                   "Psycho"),
  premio = c("Oscar",
             "Golden",
             "Oscar",
             "Grammy",
             "Tony"))
knitr::include_graphics(
  "https://storage.googleapis.com/datos_cursos/ixpantia_introR/ixpantia_logo.png"
  )    

Datos

Para la sesión utilizaremos tres conjuntos de datos distintos:

directores

Contiene información sobre 5 directores de cine. Consta de 2 variables y 5 observaciones.

glimpse(directores)

Descripción de las columnas:

| Variable | Descripción | | :----------: | :--------------------------------: | | director | Apellido del director | | nacionalidad | País de donde proviene |

peliculas

Contiene información sobre 5 películas conocidas. Consta de de 7 observaciones y 2 variables.

glimpse(peliculas)

Descripción de las columnas:

| Variable | Descripción | | :----------: | :--------------------------------: | | director | Apellido del director | | pelicula | Nombre de la película |

premios

Contiene información sobre los premios de cine ganados por distintas películas. Consta de 5 observaciones y 2 variables.

glimpse(premios)

Descripción de las columnas:

| Variable | Descripción | | :----------: | :--------------------------------: | | pelicula | Nombre de la película | | premio | Nombre del premio que recibió |

Ejercicios

Ejercicio A: Una el conjunto de datos directores con peliculas y cuente cuántas películas tiene cada director

En el conjunto de datos directores tenemos información sobre directores de cine famosos y su nacionalidad, mientras que en peliculas tenemos información sobre películas conocidas y su director. Ahora una estos dos sets de forma que podamos calcular el número de películas de cada director.


"inner_join"
grade_result(
  pass_if(~ identical(unlist(.result),
                      unlist(inner_join(directores, peliculas) %>% 
                             group_by(director) %>%
                             tally())),
          "¡Bien hecho!")
)

Ejercicio B: ¿Cuál es la diferencia entre right_join y left_join?

Puede utilizar este espacio para hacer ejercicios con right_join y left_join antes de contestar la pregunta


question("¿Cuál es la diferencia entre `right_join` y `left_join`?",
  answer("`right_join` no completa la union entre los dos conjuntos de datos"),
  answer("`left_join` une solo las observaciones que están en ambos conjuntos de datos"),
  answer("`right_join` toma solo las observaciones que concuerden con el conjunto de datos de la derecha", correct = TRUE),
  answer("`left_join` toma solo las observaciones que no están en el conjunto de la izquierda"),
  incorrect = "Incorrecto",
  correct = "Correcto")

Ejercicio C: Hacer unión de unicamente las observaciones que concuerdan entre

los conjuntos de datos peliculas con premios

Utilizando alguno de los joins vistos, obtenga un conjunto de datos que tenga las observaciones que concuerdan en los conjuntos de datos peliculas con premios. Las demás observaciones las debe de excluir


"inner"
grade_result(
  pass_if(~ identical(unlist(.result), 
                      unlist(inner_join(peliculas, premios))),
          "¡Excelente!")
)

Ejercicio D: ¿Qué resulta de un full_join entre directores y peliculas?

Al hacer un full_join entre los conjuntos de datos directores y peliculas, el conjunto de datos resultante, ¿qué características tendría?

question("¿Qué resulta de un `full_join` entre directores y peliculas?",
  answer("Un conjunto de datos con solo las observaciones que coinciden en ambos casos"),
  answer("Un conjunto de datos con las observaciones de directores que coinciden en películas"),
  answer("Un conjunto de datos con las observaciones de películas que coinciden en directores"),
  answer("Un conjunto de datos que contiene la información de ambos sets",
         correct = TRUE),
  incorrect = "Incorrecto",
  correct = "Correcto")

Ejercicio E: ¿Cuántas observaciones resultarían de aplicar un anti_join entre peliculas y directores?

question("¿Qué resultaría de un `anti_join` entre peliculas y directores? ",
  answer("Un set de datos con 12 observaciones"),
  answer("Un set de datos con 5 observaciones"),
  answer("Un set de datos con 7 observaciones"),
  answer("Un set de datos con 0 observaciones", correct = TRUE),
  incorrect = "Incorrecto",
  correct = "Correcto")


ixpantia/ixpantia.introR documentation built on Jan. 25, 2024, 2:32 p.m.