knitr::opts_chunk$set(echo = FALSE)

library(learnr)
library(dplyr)
library(readr)
library(janitor)
library(lubridate)
library(gradethis)

superheroes <- tibble::tribble(
       ~nombre,   ~bando,     ~sexo,     ~editor,
   "Magneto",     "villano",   "hombre",  "Marvel",
     "Storm",     "heroe",     "mujer",   "Marvel",
  "Mystique",     "villano",   "mujer",   "Marvel",
    "Batman",     "heroe",     "hombre",  "DC",
     "Joker",     "villano",   "hombre",  "DC",
  "Catwoman",     "villano",   "mujer",   "DC",
   "Hellboy",     "heroe",     "hombre",  "Dark Horse"
  )

editores <- tibble::tribble(
     ~editor,      ~anio_fundacion,
        "DC",       1934L,
    "Marvel",       1939L,
     "Image",       1992L
  )

tutorial_options(exercise.checker = gradethis::grade_learnr)
knitr::include_graphics(
  "https://storage.googleapis.com/datos_cursos/ixpantia_introR/ixpantia_logo.png"
  )  

Datos

Para esta tarea usaremos 2 conjuntos de datos distintos:

superheroes

Este conjunto de datos contiene datos sobre distintos superhéroes y villanos de distintas compañías. Contiene 7 observaciones y 4 variables.

glimpse(superheroes)

Descripción de las columnas:

| Variable | Descripción | | :----------: | :--------------------------------: | | nombre | Nombre del superhéroe o villano | | bando | Indica si es un villano o un héroe | | sexo | Sexo del superhéroe o villano | | editor | Indica la compañia de donde proviene el personaje |

editores

Contiene información sobre tres compañías de comics. Tiene 3 observaciones y 2 variables.

glimpse(editores)

Descripción de las columnas:

| Variable | Descripción | |:----------:|:--------------------------------:| | editor | Nombre de la compañía | | anio_fundacion | Año de fundación de la compañía |

Ejercicios

Haga un join de forma que aparezca el editor y el año de fundación de los superhéroes, pero solo de aquellos que tienen un editor en la base editores

En el conjunto de datos superheroes tenemos datos sobre distintos superhéroes, incluyendo la compañía de donde provienen, mientras que en editores tenemos información sobre las compañías. Utilice alguno de los joins para unir ambos conjuntos de datos de forma que se obtenga un nuevo data frame con la información de los superhéroes, su editor y el año de fundación. Si un superhéroe tiene un editor que no aparece en editores debe de ser excluido.


"inner_join"
grade_result(
  pass_if(~ identical(unlist(.result),
                      unlist(inner_join(superheroes, editores))),
          "¡Excelente!")
)

Realice un join de forma que a los datos de superheroes se les agrege la columna `anio_fundacion' sin excluir ningún superhéroe o villano

Anteriormente hicimos un join que agregaba el año de fundación de los editores, excluyendo a aquellos personajes que no tenían un editor con observaciones en editores. Ahora debe de hacer otro join que no excluya a ningún personaje y además agregar la columna de anio_fundacion.


"left_join"
grade_result(
  pass_if(~ identical(unlist(.result),
                      unlist(left_join(superheroes, editores))),
          "¡Bien hecho!")
)

Realice un join de tal forma que resulte una base que excluya a los superhéroes sin editor en editores pero que no agregue anio_fundacion

En este ejercicio queremos obtener un conjunto de datos que contenga únicamente los personajes que tengan un editor dentro del conjunto de datos editores. Los demás deben de ser excluidos.


"semi_join"
grade_result(
  pass_if(~ identical(unlist(.result),
                      unlist(semi_join(superheroes, editores))),
          "¡Buenísimo!")
)

Realice un join de tal forma que resulte un conjunto de datos con aquellos superhéroes que tienen un editor que NO aparece en editores

Anteriormente unimos los dos conjuntos de datos de tal forma que el resultado excluyera aquellos personajes que tuvieran un editor que no aparecía en editores. Ahora debe de hacer lo opuesto, el resultado debe incluir solo aquellos personajes que tienen un editor que NO aparece en editores


"anti_join"
grade_result(
  pass_if(~ identical(unlist(.result),
                      unlist(anti_join(superheroes, editores))),
          "¡Genial!")
)

Realice un join de tal forma que resulte un conjunto de datos con la información de ambos conjuntos de datos, sin excluir ninguna observación.

En este ejercicio debe obtener un conjunto de datos que una la información de ambos conjuntos de datos sin excluir ninguna observación, aún si esto resulta en valores faltantes en algunas de las columnas.


"full_join"
grade_result(
  pass_if(~ identical(unlist(.result),
                      unlist(full_join(superheroes, editores))),
          "¡Muy bien!")
)


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