1 Manipulación de datos

Cree un archivo rmarkdown con salida tipo html_document, con el objetivo de que al final su taller resuelto sea publicado en RPubs. Siga los siguientes pasos en orden, en cada respuesta debe mostrar el código que utiliza para obtener el resultado.

1.1 Ejercicio 1

library(knitr)
## Warning: package 'knitr' was built under R version 4.2.3
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.2.3
## Warning: package 'ggplot2' was built under R version 4.2.3
## Warning: package 'tibble' was built under R version 4.2.3
## Warning: package 'tidyr' was built under R version 4.2.3
## Warning: package 'readr' was built under R version 4.2.3
## Warning: package 'purrr' was built under R version 4.2.3
## Warning: package 'dplyr' was built under R version 4.2.3
## Warning: package 'stringr' was built under R version 4.2.3
## Warning: package 'forcats' was built under R version 4.2.3
## Warning: package 'lubridate' was built under R version 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(readxl)
## Warning: package 'readxl' was built under R version 4.2.3
library(datos)
## Warning: package 'datos' was built under R version 4.2.3
# configurar opciones por default
opts_chunk$set(echo=TRUE,
               warning=TRUE,
               message=TRUE)
library(datos)
pinguinos
## # A tibble: 344 × 8
##    especie isla  largo_pico_mm alto_pico_mm largo_aleta_mm masa_corporal_g sexo 
##    <fct>   <fct>         <dbl>        <dbl>          <int>           <int> <fct>
##  1 Adelia  Torg…          39.1         18.7            181            3750 macho
##  2 Adelia  Torg…          39.5         17.4            186            3800 hemb…
##  3 Adelia  Torg…          40.3         18              195            3250 hemb…
##  4 Adelia  Torg…          NA           NA               NA              NA <NA> 
##  5 Adelia  Torg…          36.7         19.3            193            3450 hemb…
##  6 Adelia  Torg…          39.3         20.6            190            3650 macho
##  7 Adelia  Torg…          38.9         17.8            181            3625 hemb…
##  8 Adelia  Torg…          39.2         19.6            195            4675 macho
##  9 Adelia  Torg…          34.1         18.1            193            3475 <NA> 
## 10 Adelia  Torg…          42           20.2            190            4250 <NA> 
## # ℹ 334 more rows
## # ℹ 1 more variable: anio <int>
library(magrittr)
## 
## Attaching package: 'magrittr'
## The following object is masked from 'package:purrr':
## 
##     set_names
## The following object is masked from 'package:tidyr':
## 
##     extract
data_pinguinos <- pinguinos
head(data_pinguinos, 5)
## # A tibble: 5 × 8
##   especie isla   largo_pico_mm alto_pico_mm largo_aleta_mm masa_corporal_g sexo 
##   <fct>   <fct>          <dbl>        <dbl>          <int>           <int> <fct>
## 1 Adelia  Torge…          39.1         18.7            181            3750 macho
## 2 Adelia  Torge…          39.5         17.4            186            3800 hemb…
## 3 Adelia  Torge…          40.3         18              195            3250 hemb…
## 4 Adelia  Torge…          NA           NA               NA              NA <NA> 
## 5 Adelia  Torge…          36.7         19.3            193            3450 hemb…
## # ℹ 1 more variable: anio <int>

1.2 Ejercicio 2

Revise la estructura del conjunto de datos pinguinos.

str(pinguinos)
## tibble [344 × 8] (S3: tbl_df/tbl/data.frame)
##  $ especie        : Factor w/ 3 levels "Adelia","Barbijo",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ isla           : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ largo_pico_mm  : num [1:344] 39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
##  $ alto_pico_mm   : num [1:344] 18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
##  $ largo_aleta_mm : int [1:344] 181 186 195 NA 193 190 181 195 193 190 ...
##  $ masa_corporal_g: int [1:344] 3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
##  $ sexo           : Factor w/ 2 levels "hembra","macho": 2 1 1 NA 1 2 1 2 NA NA ...
##  $ anio           : int [1:344] 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...

1.3 Ejercicio 3

Identifique las especies de pinguinos, las islas y los años de la información que contiene “pinguinos”.

1.3.1 Especie de pinguino

unique(pinguinos$especie)
## [1] Adelia  Papúa   Barbijo
## Levels: Adelia Barbijo Papúa

1.3.2 Isla

unique(pinguinos$isla)
## [1] Torgersen Biscoe    Dream    
## Levels: Biscoe Dream Torgersen

1.3.3 Años

unique(pinguinos$anio)
## [1] 2007 2008 2009

1.4 Ejercicio 4

Hoy aprenderás un nuevo paquete para generar un resumen estadístico de tus datos. Instala la librería modelsummary) y con la función datasummary_skim() genera el siguiente resumen de datos y responde a las siguientes preguntas:

library(modelsummary)
## Warning: package 'modelsummary' was built under R version 4.2.3
## `modelsummary` 2.0.0 now uses `tinytable` as its default table-drawing
##   backend. Learn more at: https://vincentarelbundock.github.io/tinytable/
## 
## Revert to `kableExtra` for one session:
## 
##   options(modelsummary_factory_default = 'kableExtra')
## 
## Change the default backend persistently:
## 
##   config_modelsummary(factory_default = 'gt')
## 
## Silence this message forever:
## 
##   config_modelsummary(startup_message = FALSE)
pinguinos_fil <-pinguinos %>% 
 filter(largo_pico_mm !="N/A" & alto_pico_mm!="N/A")


pinguinos_fil <- pinguinos_fil %>%
  mutate(largo_aleta_mm= as.numeric (largo_aleta_mm),
         masa_corporal_g= as.numeric(masa_corporal_g),
         anio= as.numeric(anio),
         )

str(pinguinos_fil)
## tibble [342 × 8] (S3: tbl_df/tbl/data.frame)
##  $ especie        : Factor w/ 3 levels "Adelia","Barbijo",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ isla           : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ...
##  $ largo_pico_mm  : num [1:342] 39.1 39.5 40.3 36.7 39.3 38.9 39.2 34.1 42 37.8 ...
##  $ alto_pico_mm   : num [1:342] 18.7 17.4 18 19.3 20.6 17.8 19.6 18.1 20.2 17.1 ...
##  $ largo_aleta_mm : num [1:342] 181 186 195 193 190 181 195 193 190 186 ...
##  $ masa_corporal_g: num [1:342] 3750 3800 3250 3450 3650 ...
##  $ sexo           : Factor w/ 2 levels "hembra","macho": 2 1 1 1 2 1 2 NA NA NA ...
##  $ anio           : num [1:342] 2007 2007 2007 2007 2007 ...
pinguinos_sel<- as.data.frame(pinguinos_fil)

datasummary_skim(pinguinos_sel,type = "numeric",output = "html")
tinytable_jawhz434ilf6edujbryc
Unique Missing Pct. Mean SD Min Median Max Histogram
largo_pico_mm 164 0 43.9 5.5 32.1 44.5 59.6
alto_pico_mm 80 0 17.2 2.0 13.1 17.3 21.5
largo_aleta_mm 55 0 200.9 14.1 172.0 197.0 231.0
masa_corporal_g 94 0 4201.8 802.0 2700.0 4050.0 6300.0
anio 3 0 2008.0 0.8 2007.0 2008.0 2009.0

1.5 ¿Cuánto miden en promedio el largo y alto de los picos de los pinguinos de la muestra?

pinguinos_fil %>% 
 summarise(Promedio_Largo = mean(largo_pico_mm),
 Promedio_Alto = mean(alto_pico_mm))
## # A tibble: 1 × 2
##   Promedio_Largo Promedio_Alto
##            <dbl>         <dbl>
## 1           43.9          17.2

1.6 ¿Cuál es el peso corporal máximo de los pinguinos de la muestra?

pinguinos_fil %>% 
 summarise(Peso_Max = max(masa_corporal_g))
## # A tibble: 1 × 1
##   Peso_Max
##      <dbl>
## 1     6300

1.7 Ejercicio 5

Recree el código en R para generar la siguiente tabla que muestra el mínimo, el máximo y la media aritmética de las medidas del largo de las aletas de los pinguinos, clasificada por especie.

pinguinos_fil %>% 
 group_by(especie) %>% 
 summarise(Min = min(largo_aleta_mm),
 Max = max(largo_aleta_mm),
 Med = mean(largo_aleta_mm))
## # A tibble: 3 × 4
##   especie   Min   Max   Med
##   <fct>   <dbl> <dbl> <dbl>
## 1 Adelia    172   210  190.
## 2 Barbijo   178   212  196.
## 3 Papúa     203   231  217.

1.8 Ejercicio 6

Con el paquete modelsummary puede generar tablas con más información que la anterior y con una mejor estructura. Utilice la función datasummary() del paquete modelsummary y recree el código para generar la siguiente tabla. No se olvide consultar la ayuda para conocer los argumentos y parámetros que contiene la función.

pinguinos_fil <-pinguinos %>% 
 filter(largo_pico_mm !="N/A" & alto_pico_mm!="N/A")
# convierto los datos de tipo entero a numerico 
pinguinos_fil <- pinguinos_fil %>%
  mutate(largo_aleta_mm= as.numeric (largo_aleta_mm),
         masa_corporal_g= as.numeric(masa_corporal_g)
  )
         
datasummary(largo_pico_mm+alto_pico_mm+largo_aleta_mm+masa_corporal_g ~ especie* (Mean+ SD), data = pinguinos_fil, output = "default")       
tinytable_umbrzh490tsmhbwbejhp
Adelia Barbijo Papúa
Mean SD Mean SD Mean SD
largo_pico_mm 38.79 2.66 48.83 3.34 47.50 3.08
alto_pico_mm 18.35 1.22 18.42 1.14 14.98 0.98
largo_aleta_mm 189.95 6.54 195.82 7.13 217.19 6.48
masa_corporal_g 3700.66 458.57 3733.09 384.34 5076.02 504.12

2 Visualización de datos

Cree un archivo rmarkdown con salida tipo html_document, con el objetivo de que al final su taller resuelto sea publicado en RPubs. Siga los siguientes pasos en orden, en cada respuesta debe mostrar el código que utiliza para obtener el resultado.

2.1 Ejercicio 1

Recree el código R para generar la siguiente gráfica que muestra la distribución de los datos sobre la longitud de las aletas de los pinguinos de la muestra clasificado por especie y por isla, puede modificar la estética a su gusto.

library(ggplot2)
library(ggthemes)
## Warning: package 'ggthemes' was built under R version 4.2.3
library(scales)
## Warning: package 'scales' was built under R version 4.2.3
## 
## Attaching package: 'scales'
## The following object is masked from 'package:purrr':
## 
##     discard
## The following object is masked from 'package:readr':
## 
##     col_factor
library(tidyverse)
library(magrittr)

pinguinos_fil  %>%
  ggplot(aes(x=largo_aleta_mm, fill = especie)) +
  ggtitle("Gráfico 1: Distribucion de la longitud de las aletas de los pinguinos") + 
  facet_grid(rows = vars(isla), margins = FALSE) +
  geom_density(alpha = 0.4) +
  labs(subtitle = "(diferenciando por especie e isla)",
     caption = "Datos provenientes de pinguinos dataset",
     x = "Longitud de Aleta",
     y = " ",
     color = "Especie de pinguino")

2.2 Ejercicio 2

Si usted desea visualizar la relación que existe entre el largo del pico y el largo de la aleta de los pinguinos por especie. ¿Qué gráficos utilizaría?. Genere el gráfico que usted considere pertinente para cumplir con su objetivo, agregue el tema, colores y estética necesaria.

library(ggplot2)
library(ggthemes)
library(scales)
library(tidyverse)
library(magrittr)


pinguinos_fil %>%
  ggplot(aes(largo_aleta_mm, largo_pico_mm, color = especie), ) + 
  geom_point() +
  labs(title = "Gráfico 2: Largo del Pico frente a Largo de aleta",
       subtitle = "(diferenciando por especie de pinguinos)",
       caption = "Datos provenientes de pinguinos dataset",
       x = "Largo de Aleta",
       y = "Largo de Pico",
       color = "Especie de pinguino")