#Ejercicio 8
# Incorporad el dataset ChickWeight que contiene información sobre el peso de 578 pollitos
# en gramos (weight), el tiempo desde la medición al nacer (Time), una variable identificadora
# de cada pollito (Chick) a partir del rango de peso y una variable factor con el tipo de dieta
# experimental que cada pollito recibió (Diet).
# a) Incorporad el conjunto de datos ChickWeight del paquete datasets a vuestro entorno
# de trabajo.
# b) Generad un gráfico de dispersión de la variable weight.
# c) Cread un diagrama de caja con la variable Time.
# Para más información sobre ChickWeight: https://rdrr.io/r/datasets/ChickWeight.html
# 1. Instalamos y cargamos rio

# a) Incorporamos el conjunto de datos del paquete datasets
library(datasets)
data("ChickWeight")

# Creamos una copia con el nombre que prefieras (opcional)
dataChikW <- ChickWeight

# Comprobamos que las columnas son correctas
names(dataChikW)
## [1] "weight" "Time"   "Chick"  "Diet"
head(dataChikW)
##   weight Time Chick Diet
## 1     42    0     1    1
## 2     51    2     1    1
## 3     59    4     1    1
## 4     64    6     1    1
## 5     76    8     1    1
## 6     93   10     1    1
# b) Generamos un gráfico de dispersión de la variable weight
plot(dataChikW$weight, 
     main = "Gráfico de Dispersión: Peso de los pollitos",
     xlab = "Número de observación", 
     ylab = "Peso (gramos)",
     col = "royalblue", 
     pch = 16) # Puntos rellenos para mejor visibilidad

# c) Cread un diagrama de caja con la variable Time
boxplot(dataChikW$Time, 
        main = "Diagrama de Caja: Tiempo (días)",
        ylab = "Días desde el nacimiento",
        col = "orange",
        border = "brown")

# Ejercicio 9:
#   A partir del conjunto de datos anorexia del paquete MASS, cread otro data frame que se llame
# anorexia_treat_df formado por Treat y por un vector nuevo calculado a partir de la
# diferencia Prewt-Postwt. De esta manera, nos quedará un data frame que contenga el tipo de
# tratamiento y el valor del peso ganado o perdido después de haber realizado el tratamiento.
# Seleccionad aquellos individuos que han ganado peso después del tratamiento y cread un
# nuevo conjunto llamado anorexia_treat_C_df que contenga solo los datos de aquellos que
# han seguido el tratamiento «Cont» y que han ganado peso después del tratamiento.

library(MASS)
data("anorexia")

# Creamos el vector de la diferencia
dif_peso <- anorexia$Prewt - anorexia$Postwt

# Creamos el primer data frame solicitado
anorexia_treat_df <- data.frame(
  Treat = anorexia$Treat,
  Diferencia = dif_peso
)

head(anorexia_treat_df)
##   Treat Diferencia
## 1  Cont        0.5
## 2  Cont        9.3
## 3  Cont        5.4
## 4  Cont      -12.3
## 5  Cont        2.0
## 6  Cont       10.2
# Filtramos: Peso ganado significa que Postwt > Prewt, por tanto Diferencia < 0
ganadores_peso <- anorexia_treat_df[anorexia_treat_df$Diferencia < 0, ]
# Seleccionamos: Tratamiento "Cont" Y ganancia de peso (Diferencia < 0)
anorexia_treat_C_df <- anorexia_treat_df[anorexia_treat_df$Treat == "Cont" & 
                                           anorexia_treat_df$Diferencia < 0, ]

# Verificamos el resultado
print(anorexia_treat_C_df)
##    Treat Diferencia
## 4   Cont      -12.3
## 8   Cont      -11.6
## 10  Cont       -6.2
## 13  Cont       -8.3
## 14  Cont       -3.3
## 15  Cont      -11.3
## 21  Cont       -2.8
## 22  Cont       -0.3
## 23  Cont       -1.8
## 24  Cont       -3.7
## 25  Cont      -15.9
# Usamos el data frame que creamos en el ejercicio anterior
boxplot(Diferencia ~ Treat, data = anorexia_treat_df,
        main = "Cambio de Peso por Tipo de Tratamiento",
        xlab = "Tratamiento",
        ylab = "Diferencia (Pre - Post)",
        col = c("lightblue", "orange", "lightgreen"),
        las = 1) # las = 1 pone los números del eje Y horizontales

# Añadimos una línea en el 0 para ver quién gana y quién pierde
abline(h = 0, col = "red", lty = 2, lwd = 2)

# Nota: Los puntos por debajo de la línea roja ganaron peso.
# Los puntos por encima perdieron peso.