setwd("C:/Users/layza/OneDrive/Documents/ESTA5504-0U1/examen grupal")
1. Importe las dos bases de datos y construye un solo data frame con las dos bases de datos.
library(readxl)
library(printr)
library(dplyr)
library(readr)
library(ggplot2)
library(plotly)
library(DT)
hospital_a <- read_csv("hospital_a.csv")
hospital_b <- read_csv("hospital_b.csv")

datos<- bind_rows(hospital_a, hospital_b)

datatable(datos, options = list(pageLength = 5, lengthMenu = c(5, 10, 15)))
2. Importe las claves de aleatorización y agrega a la base de datos el farmaco administrado a cada paciente.
library(readr)
claves <- read_csv("claves_aleatorizacion.csv")

datos <- datos %>%
  left_join(claves, by = "CLAVE")
         
datatable(datos, options = list(pageLength = 5, lengthMenu = c(5, 10, 15)))
3. Explore los datos y haga una pequena explicación de lo que observas.
skimr::skim(datos)
Data summary
Name datos
Number of rows 100
Number of columns 13
_______________________
Column type frequency:
character 4
numeric 9
________________________
Group variables None

Variable type: character

skim_variable n_missing complete_rate min max empty n_unique whitespace
NOMBRE 0 1 3 3 0 98 0
F NACIM 0 1 8 10 0 100 0
F INCLUS 0 1 8 10 0 96 0
FARMACO 0 1 4 26 0 3 0

Variable type: numeric

skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 hist
CLAVE 0 1 50.50 29.01 1 25.75 50.5 75.25 100 ▇▇▇▇▇
SEXO 0 1 0.46 0.50 0 0.00 0.0 1.00 1 ▇▁▁▁▇
ALTURA 0 1 167.78 10.38 146 159.00 167.0 175.00 194 ▂▇▇▅▂
PESO 0 1 73.33 16.65 39 62.00 73.0 85.00 116 ▃▇▇▅▂
ESTRES 0 1 24.38 10.46 4 17.00 24.0 31.25 65 ▅▇▆▁▁
PAD INI 0 1 88.42 8.02 70 82.00 89.0 94.00 108 ▂▇▇▇▂
PAD FIN 0 1 86.66 18.01 42 73.75 87.0 102.00 135 ▂▇▇▇▁
PAS INI 0 1 152.52 15.13 108 143.00 152.0 162.00 192 ▁▃▇▆▁
PAS FIN 0 1 149.86 16.63 114 139.75 151.5 161.00 193 ▃▆▇▃▁

Se puede observar que tenemos un dataframe que contiene 100 filas y 13 columnas. Tenemos 4 columnas tipo “Character”y 9 tipo “numeric”. Se observan 0 datos faltantes. La mayoria de los histogramas son simetricos que quiere decir que los datos proporcionados se distribuyen de manera uniforme a ambos lados del punto central.

4. Realice los cambios necesarios en los nombres de las columnas. Ademas, revise el tipo de dato de cada columna y haga los ajustes necesarios.
names(datos)
##  [1] "CLAVE"    "NOMBRE"   "F NACIM"  "F INCLUS" "SEXO"     "ALTURA"  
##  [7] "PESO"     "ESTRES"   "PAD INI"  "PAD FIN"  "PAS INI"  "PAS FIN" 
## [13] "FARMACO"
colnames(datos) <- c("CLAVE",  "NOMBRE",  "NACIMIENTO",  "INCLUSION", "SEXO", "ALTURA", "PESO",  "ESTRES","DIASTOLICA_INICIAL", "DIASTOLICA_FINAL",  "SISTOLICA_INICIAL",  "SISTOLICA_FINAL",  "FARMACO")

datos <- datos %>% 
  mutate(SEXO = as.character(SEXO))

class(datos$SEXO)
## [1] "character"
datos <- datos %>% 
  mutate(across(.cols = c(SEXO, NOMBRE, NACIMIENTO, INCLUSION, FARMACO), .fns=as.factor))

class(datos$SEXO)
## [1] "factor"
class(datos$NOMBRE)
## [1] "factor"
class(datos$NACIMIENTO)
## [1] "factor"
class(datos$INCLUSION)
## [1] "factor"
class(datos$FARMACO)
## [1] "factor"
5. Crea dos nuevas variables con el nombre que consideres para analizar la evolución de la presión arterial diastolica y sistolica, respectivamente
datos <- datos %>%
  mutate(EVOLUCION_DIASTOLICA = DIASTOLICA_FINAL - DIASTOLICA_INICIAL,
         EVOLUCION_SISTOLICA = SISTOLICA_FINAL - SISTOLICA_INICIAL)

datatable(datos, options = list(pageLength = 5, lengthMenu = c(5, 10, 15)))
6. Crea dos nuevas variables que indiquen si aumento o disminuyo la presión arterial diastolica o sistolica, respectivamente.
datos <- datos %>%
  mutate(COMPORTAMIENTO_D =ifelse(EVOLUCION_DIASTOLICA<0,"disminuyo", "aumento")) %>%
  mutate(COMPORTAMIENTO_S =ifelse(EVOLUCION_SISTOLICA<0,"disminuyo", "aumento"))

datatable(datos, options = list(pageLength = 5, lengthMenu = c(5, 10, 15)))
7. Crea tablas resumenes por grupo para hombres y mujeres. ¿Qué puedes concluir?
library(knitr)
library(kableExtra)

resumen_hombres <- datos %>%
  filter(SEXO == 0) %>%
  summarise(media_altura = mean(ALTURA),
            media_peso   = mean(PESO),
            media_estres = mean(ESTRES))

resumen_mujeres <- datos %>%
  filter(SEXO == 1) %>%
  summarise(media_altura = mean(ALTURA),
            media_peso   = mean(PESO),
            media_estres = mean(ESTRES))

kable(resumen_hombres, caption = "Resumen para hombres") %>%
  kable_styling(full_width = FALSE)
Resumen para hombres
media_altura media_peso media_estres
169.1111 75.16667 23.14815

Para este trabajo se pudo observar que el hombre promedio en este grupo tienen una altura promedio de 169.11 cm, un peso promedio de 75.17 kg y un nivel de estrés promedio de 23.15.



```r
kable(resumen_mujeres, caption = "Resumen para mujeres") %>%
  kable_styling(full_width = FALSE)
Resumen para mujeres
media_altura media_peso media_estres
166.2174 71.17391 25.83152

Para este trabajo se pudo observar que la mujer promedio en este grupo tienen una altura promedio de 166.22 cm, un peso promedio de 71.17 kg y un nivel de estrés promedio de 25.832.

Comparando estos dos resumenes, se puede concluir que, en promedio, los hombres en este grupo tienden a ser ligeramente más altos y pesados que las mujeres. Además, parece haber una diferencia en los niveles de estrés promedio entre hombres y mujeres. (las mujeres parecen tener mas estres)

8.Realice graficas dinamicas de las diferentes variables, donde puedas explicar a grandes rasgos las diferencias que se presentan por grupo. (No es necesario hacer una grafica por variable).
grafico_interactivo <- ggplot(datos, aes(x = ALTURA, y = PESO, color = SEXO)) +
  geom_point() +
  labs(title = "Diferencias por sexo",
       x = "ALTURA",
       y = "PESO",
       color = "SEXO") +
  theme_minimal()

grafico_interactivo <- ggplotly(grafico_interactivo)

grafico_interactivo

En el gráfico, se puede observar la altura en el eje x y el peso en el eje y, diferenciando los datos por sexo. Se aprecia que la distribución de los datos no sigue una tendencia lineal clara. Además, se observa una considerable superposición entre los datos de hombres y mujeres en la gráfica. Aunque no se identifican valores atípicos de manera evidente, se nota un punto correspondiente a un hombre que está ligeramente más alejado del resto de los datos.

plot_ly(datos, x = ~ALTURA, y = ~PESO, z = ~FARMACO,
               color = ~SEXO, colors = c('#8EE5EE', '#EE6AA7'),
               marker = list(size = 7, opacity = 0.7),
               type = 'scatter3d', mode = 'markers')

En la segunda gráfica, podemos apreciar que fármaco genera aproximadamente una línea recta en relación con el peso de los pacientes. Esta representación también incorpora el sexo de los pacientes, junto con la altura y, por supuesto, el fármaco administrado. Se presenta que el IECA tiene una relación más consistente y predecible con la variable sexo, peso y altura.

9. Redacta una conclusión general de todos los hallazgos encontrados, donde puedas explicar las diferencias importantes de cada grupo y que se puede concluir sobre el efecto de las dos alternativas terapeuticas en el control de la hipertensión arterial.

Tras analizar los resultados obtenidos, se puede concluir que la mayoría de los fármacos contribuyeron a la disminución de la presión arterial diastólica y sistólica.Lo que pudimos observar fue que el IECA tiene un efecto más uniforme en comparación con los otros medicamentos, que pueden tener efectos más variables o menos predecibles. Por tal razon concluimos que la opción más efectiva fue el fármaco IECA, ya que en la gran mayoría de los casos, ayudó a reducir tanto la presión diastólica como la presión sistólica.