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" )
Para esta tarea usaremos 2 conjuntos de datos distintos:
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 |
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 |
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 editoresEn 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!") )
join
de forma que a los datos de superheroes se les agrege la columna `anio_fundacion' sin excluir ningún superhéroe o villanoAnteriormente 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!") )
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!") )
join
de tal forma que resulte un conjunto de datos con aquellos superhéroes que tienen un editor que NO aparece en editoresAnteriormente 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!") )
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!") )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.