###### tags: `UAX` `Estudiantes` `Laboratorio` `Prácticas`
<font color = 'gray'>
<p style="text-align:right;">Prof.: Laura J. Marcos-Zambrano </font>
# Curso 24-25. Laboratorio II: Manejo de R
:::info
**Objetivos:** Operar en el entorno R. Manejar comandos básicos de la librería tidyverse para filtrar y seleccionar datos y calcular estadísticos simples.
:::
#### Preparación:
1. Abrir RStudio.
2. Abrir un Script de R y guardarlo como `laboratorio2.R`
>Guarda todo lo que hagas en el script porque te será útil para recordar las funciones y comandos usados.
4. Descargar el archivo [toy.csv ](https://drive.google.com/file/d/1b8-JEERbx_7MyOO8LkmC1qMP_GCYqpC1/view?usp=sharing)
4. Ver la [hoja](https://images.datacamp.com/image/upload/v1676302697/Marketing/Blog/Tidyverse_Cheat_Sheet.pdf) de comandos de Tidyverse.
### Manejo del paquete tidyverse para manipulación de datos.
Cargar librería `tidyverse` y dataset `starwars`.
```r=1
library(tidyverse)
data(starwars)
```
>:sleuth_or_spy: Inspecciona el dataset.
### Filtrar y seleccionar datos:
```r=1
#Ejemplos usando select
# Seleccionar todas las columnas menos el nombre
starwars %>% select(-name)
#Seleccionar sólo las columnas que tienen subraya (_)
starwars %>% select(contains("_"))
#Seleccionar sólo las columnas que empiezan con "s"
starwars %>% select(starts_with("s"))
#Crear un data frame con los nombres y planeta de origen (homeworld)
homeworld <- starwars %>% select(name, homeworld)
#Filtrar datos
#Filtrar por especies: sólo humanos
human <- starwars %>% filter(species == "Human")
#Filtrar por especies: sólo humanos del planeta Tatooine
starwars %>% filter(species == "Human", homeworld == "Tatooine")
#Crear un nuevo datframe con todas las especies menos los Droides
starwars_nodroids <- starwars %>% filter(species != "Droid")
```
* ¿Cuántos registros cumplen las condiciones finales?
A la hora de filtrar y seleccionar te serán utiles los condicionales:
| Símbolo | Significado |
| ------- | --------------------- |
| < | Menor que |
| > | Mayor que |
| == | Igual que |
| <= | Menor o igual que |
| >= | Mayor o igual que |
| != | Diferente que |
| %in% | Pertenece al conjunto |
| is.na | Es NA |
| !is.na | No es NA |
### Seleccionar y agrupar datos
```r=1
#Usamos group_by y tally
starwars %>% group_by(species) %>% tally()
#Añadiendo otra variable
starwars %>% group_by(species, gender) %>% tally()
#Si lo quieres guardar en el environment recuerda asignarle un nombre
table_gender <- starwars %>% group_by(species, gender) %>% tally()
```
### Calcular algunos estadísticos
>na.rm=T quiere decir que elima los NA (valores No Asignados o sin datos)
```r=
starwars %>% group_by(species) %>% summarise(mean_height = mean(height, na.rm = T),mean_mass = mean(mass,na.rm = T))
```
* ¿Cómo calcularías la desviación estándar (sd) de esos parámetros? Recuerda consultar con `?` si no sabes como usar una función o comando. Por ejemplo: `?summarise()` ,`?sd()`.
### Crear gráficos y modificar algunos elementos.
```r=1
#Hacer un gráfico de la altura vs. la masa de los personajes
ggplot(starwars, aes(height, mass)) + geom_point()
#Puedes modificar el color
ggplot(starwars, aes(height, mass)) + geom_point(colour = "red")
#Modificando el color y el punto
ggplot(starwars, aes(height, mass)) + geom_point(colour = "purple", pch = 3)
#Modificando el color y el fondo
ggplot(starwars, aes(height, mass)) + geom_point(colour = "red") + theme_light()
```
* Al crear los gráficos puedes observar que hay un punto que corresponde a un personaje con una masa muy grande. Inspecciona el datset, filtra usando las funciones de tidyverse, crea un nuevo dataframe sin ese personaje y crea de nuevo el gráfico final.
**Ejercicio:**
* Descarga el dataset `toy.csv` cargalo en R studio usando la función `read_csv` de la libreria `tidyverse`. Tienes que poner la dirección donde has guardado el archivo descargado. En el ejemplo, el archivo está en la carpeta "Descargas"
```r=1
toy <- read_csv("Descargas/toy.csv")
```
> IMC es Indice de Masa Corporal, IMC_clas: clasificación de acuerdo al IMC.
> IAS significa Indice de Alimentación Saludable; IAS_clas: clasificación de acuerdo al IAS.
> CCintura significa Circunferencia de cintura.
* Inspecciona el dataset, haz un resumen de la media (mean) de las variables (Peso, Altura,IMC, IAS, CCintura). Agrupando por sexo.
* Haz una tabla sólo con los pacientes femeninos ¿Cuántos registros cumplen las condiciones? ¿De estos cuantos tienen Sobrepeso (Overweight)? :sleuth_or_spy: Usa select y filter.
* Haz un gráfico usando ggplot relacionando el IMC (Indice de masa corporal) con el peso (Weight_Kg) de **todos los pacientes.**
* Repítelo filtrando sólo los pacientes categorizados como "Overweight" y "Obesity".
**Ejercicio:**
* Utiliza los comandos adecuados para instalar los paquetes de R `ape` `phangorn` y `phytools` que utilizaremos en el laboratorio de la siguiente semana. Carga las librerías y envia un print de pantalla con el output, demostrando que la instalación fue exitosa o si hubo algún problema.
```r=1
install.packages("ape")
install.packages("phangorn")
install.packages("phytools")
```
### Entrega de la Actividad
Al finalizar sube el script usado como una tarea a Laboratorio2.
---
<font color = 'gray'>
<p style="text-align:left;"> Práctica de R basada en Speciation & Population Genomics: a how-to-guide
</font>