class: center, middle .linea-superior[] .linea-inferior[] <img src="imagenes/logo_super_portada.png" width="180" /> # Tarea 2 Soluciones ## Plazo: 13 de junio con puntaje extra o 16 de junio sin extra --- background-image: url("imagenes/background.PNG") background-size: contain; background-position: 50% 0% # Preámbulo Para resolver esta tarea se utilizarán dos bases de datos incluidas en el paquete `dplyr`. Ya que este paquete lo instalamos en la sesión 3 recuerde que para utilizarlo solo debe cargarlo, Las bases a utilizar serán `starwars` y `storms`. La primera contiene información sobre los personajes de las películas del universo Star Wars y la segunda contiene información histórica de tormentas desde 1975 a 2022. Esta tarea será un poco más difícil que la anterior ya que uds deberán crear de cero su script. Por favor sea ordenado y utilice tantos comentarios sean necesarios para que se acostumbren a que su trabajo sea autoexplicativo. Antes de escribir la respuesta a cada pregunta, debe escribir como comentario en la línea anterior, el numeral que está respondiendo. Por ejemplo: ``` r # Pregunta 2.1 o Pregunta 2: 1, o como usted prefiera hola <- "hola" ``` La primera pregunta de esta tarea consiste en que ustedes agreguen ordenadamente cosas a su script. Cualquier duda o consulta por favor hacerla directamente a mí o por Teams. --- background-image: url("imagenes/background.PNG") background-size: contain; background-position: 50% 0% # Pregunta 1 (orden y carga de objetos) 1.- Genere un nuevo script (archivo R) llamado `NOMBRE_tarea_2.R`. Por ejemplo, si usted se llama Nicolás, el nombre de su script debe ser: `nicolas_tarea_2.R`. 2.- En las primeras líneas de su script escriba como comentarios (recordar el símbolo `#`) la siguiente información: `Tarea 2`, `Nombre: (poner su nombre)` y `Plazo: 13 de junio` 3.- Después de los comentarios iniciales escritos del punto dos, escriba el código para cargar la librería `dplyr`. ``` r library(dplyr) ``` 4.- Asigne las bases `starwars` y `storms` a dos objetos con el nombre que usted prefiera. Si cargó correctamente la librería en el punto 3 puede asignar las bases de la siguiente forma: ``` r nombre_que_usted_prefiera <- starwars otro_nombre_que_usted_prefiera <- storms ``` --- background-image: url("imagenes/background.PNG") background-size: contain; background-position: 50% 0% # Pregunta 2 (características de las bases) 1.- Compruebe con la función `class()` que los objetos que usted creó corresponden a `data frames` o `tibbles`. Recuerde que los tibbles son homólogos a los data frames. ``` r class(nombre_que_usted_prefiera) ``` ``` ## [1] "tbl_df" "tbl" "data.frame" ``` ``` r class(otro_nombre_que_usted_prefiera) ``` ``` ## [1] "tbl_df" "tbl" "data.frame" ``` 2.- Imprima las dimensiones de cada una de las bases. Recuerde la función asociada a *dimensiones* vista en la tercera sesión. ``` r dim(nombre_que_usted_prefiera) ``` ``` ## [1] 87 14 ``` ``` r dim(otro_nombre_que_usted_prefiera) ``` ``` ## [1] 19537 13 ``` --- background-image: url("imagenes/background.PNG") background-size: contain; background-position: 50% 0% # Pregunta 2 (características de las bases) 3.- Imprima los nombres de las columnas para cada base. ``` r names(nombre_que_usted_prefiera) ``` ``` ## [1] "name" "height" "mass" "hair_color" "skin_color" ## [6] "eye_color" "birth_year" "sex" "gender" "homeworld" ## [11] "species" "films" "vehicles" "starships" ``` ``` r names(otro_nombre_que_usted_prefiera) ``` ``` ## [1] "name" "year" ## [3] "month" "day" ## [5] "hour" "lat" ## [7] "long" "status" ## [9] "category" "wind" ## [11] "pressure" "tropicalstorm_force_diameter" ## [13] "hurricane_force_diameter" ``` 4.- En el objeto que asignó la base de `starwars` suponga que usted necesita acceder solamente a la columna `species`. ¿Cómo lo haría? Imprima sólo esta columna. Puede utilizar indexación o el operador específico visto en la sesión 3. ``` r nombre_que_usted_prefiera$species ``` ``` ## [1] "Human" "Droid" "Droid" "Human" ## [5] "Human" "Human" "Human" "Droid" ## [9] "Human" "Human" "Human" "Human" ## [13] "Wookiee" "Human" "Rodian" "Hutt" ## [17] "Human" NA "Yoda's species" "Human" ## [21] "Human" "Droid" "Trandoshan" "Human" ## [25] "Human" "Mon Calamari" "Human" "Human" ## [29] "Ewok" "Sullustan" "Human" "Neimodian" ## [33] "Human" "Human" "Gungan" "Gungan" ## [37] "Gungan" "Human" "Toydarian" "Dug" ## [41] "Human" "Human" "Zabrak" "Twi'lek" ## [45] "Twi'lek" "Aleena" "Vulptereen" "Xexto" ## [49] "Toong" "Human" "Cerean" "Nautolan" ## [53] "Zabrak" "Tholothian" "Iktotchi" "Quermian" ## [57] "Kel Dor" "Chagrian" NA NA ## [61] "Human" "Geonosian" "Mirialan" "Mirialan" ## [65] "Human" "Human" "Human" "Human" ## [69] "Clawdite" "Besalisk" "Kaminoan" "Kaminoan" ## [73] "Human" "Droid" "Skakoan" "Muun" ## [77] "Togruta" "Kaleesh" "Wookiee" "Human" ## [81] NA "Pau'an" "Human" "Human" ## [85] "Human" "Droid" "Human" ``` --- background-image: url("imagenes/background.PNG") background-size: contain; background-position: 50% 0% # Pregunta 3 (gramática de manipulación de datos) Para estas dos preguntas utilice las funciones asociadas a verbos vistas en la sesión 3 y el operador **pipe**. Recuerde que el operador **pipe** es `|>`. 1.- Haga las siguientes operaciones en el objeto que contiene la base de `starwars`: **seleccione** solamente las columnas llamadas `name`, `height`, `mass`, `gender`, `homeworld` y `species`; luego **filtre** la base para que sólo contemple aquellas especies (`species`) que son humanas; finalmente **ordene** la base según la columna `height` de mayor a menor. ``` r nombre_que_usted_prefiera |> select(name, height, mass, gender, homeworld, species) |> filter(species == "Human") |> arrange(desc(height)) ``` ``` ## # A tibble: 35 × 6 ## name height mass gender homeworld species ## <chr> <int> <dbl> <chr> <chr> <chr> ## 1 Darth Vader 202 136 masculine Tatooine Human ## 2 Qui-Gon Jinn 193 89 masculine <NA> Human ## 3 Dooku 193 80 masculine Serenno Human ## 4 Bail Prestor Organa 191 NA masculine Alderaan Human ## 5 Anakin Skywalker 188 84 masculine Tatooine Human ## 6 Mace Windu 188 84 masculine Haruun Kal Human ## 7 Raymus Antilles 188 79 masculine Alderaan Human ## 8 Padmé Amidala 185 45 feminine Naboo Human ## 9 Biggs Darklighter 183 84 masculine Tatooine Human ## 10 Boba Fett 183 78.2 masculine Kamino Human ## # ℹ 25 more rows ``` --- background-image: url("imagenes/background.PNG") background-size: contain; background-position: 50% 0% # Pregunta 3 (gramática de manipulación de datos) 2.- Haga las siguientes operaciones en el objeto que contiene la base de `storms`: excluya las columnas `category` y `tropicalstorm_force_diameter`; luego **filtre** la base para que sólo contenga información asociada al año (`year`) `\(1993\)`; luego cree una nueva columna llamada `wind_corregida` que consista en multiplicar por 100 la columna `wind`; finalmente ordene la base según la columna `pressure` de menor a mayor. ``` r otro_nombre_que_usted_prefiera |> select(-category, -tropicalstorm_force_diameter) |> filter(year == 1993) |> mutate(wind_corregida = wind*100) |> arrange(pressure) ``` ``` ## # A tibble: 224 × 12 ## name year month day hour lat long status wind pressure ## <chr> <dbl> <dbl> <int> <dbl> <dbl> <dbl> <fct> <int> <int> ## 1 Emily 1993 9 1 0 35.6 -74.9 hurricane 100 960 ## 2 Emily 1993 8 31 21 35.2 -75.1 hurricane 100 961 ## 3 Emily 1993 8 31 18 34.5 -75.2 hurricane 100 962 ## 4 Emily 1993 9 1 6 36.6 -74.4 hurricane 100 962 ## 5 Emily 1993 8 31 12 33.6 -74.7 hurricane 95 965 ## 6 Emily 1993 9 1 12 37.5 -72.7 hurricane 95 965 ## 7 Floyd 1993 9 12 18 48 -6 extratropical 70 966 ## 8 Floyd 1993 9 13 0 48 -5 extratropical 70 966 ## 9 Emily 1993 9 1 18 38.2 -70.7 hurricane 90 969 ## 10 Emily 1993 8 31 6 32.9 -73.8 hurricane 85 970 ## # ℹ 214 more rows ## # ℹ 2 more variables: hurricane_force_diameter <int>, wind_corregida <dbl> ```