# Cargar las librerías necesarias
library(readxl)
library(dplyr)
library(ggplot2)

# Cargar los datos desde un archivo Excel
datos <- read_excel("Concreto_Resistencia_Compression.xlsx")

# Visualizar las primeras filas de los datos
head(datos)
## # A tibble: 6 × 13
##   Cliente        `Tipo de Concreto`     `Resistencia MPa` Fecha Realización Ci…¹
##   <chr>          <chr>                              <dbl> <dttm>                
## 1 Olivia Ortiz   Shotcrete                             25 2024-04-22 13:16:54   
## 2 Jeremy Lucas   Shotcrete                             25 2024-04-05 13:16:54   
## 3 John Mcguire   Shotcrete                             28 2024-03-17 13:16:54   
## 4 Monica Choi    Concreto con Fibra Ul…                15 2024-04-25 13:16:54   
## 5 Cynthia Miller Concreto con Fibra Ul…                25 2024-03-19 13:16:54   
## 6 Amber Daniel   Directo                               10 2024-04-14 13:16:54   
## # ℹ abbreviated name: ¹​`Fecha Realización Cilindros`
## # ℹ 9 more variables: `Fecha Ensayo Compresión` <dttm>,
## #   `Hora Elaboración Cilindros` <chr>, `Hora Ensayo` <chr>, `Peso kg` <dbl>,
## #   `Días Ensayados` <dbl>, `Altura Cilindros plg` <dbl>,
## #   `Diámetro Cilindros plg` <dbl>, `Carga Total kN` <dbl>,
## #   `Porcentaje de Ensayo %` <dbl>
# Resumen estadístico básico de los datos
summary(datos)
##    Cliente          Tipo de Concreto   Resistencia MPa
##  Length:100         Length:100         Min.   :10.00  
##  Class :character   Class :character   1st Qu.:11.00  
##  Mode  :character   Mode  :character   Median :18.00  
##                                        Mean   :18.62  
##                                        3rd Qu.:25.00  
##                                        Max.   :28.00  
##  Fecha Realización Cilindros      Fecha Ensayo Compresión         
##  Min.   :2024-03-02 13:16:54.71   Min.   :2024-03-07 13:16:54.72  
##  1st Qu.:2024-03-16 07:16:54.72   1st Qu.:2024-03-30 13:16:54.74  
##  Median :2024-03-28 01:16:54.73   Median :2024-04-21 13:16:54.73  
##  Mean   :2024-03-29 18:19:18.72   Mean   :2024-04-30 21:12:06.72  
##  3rd Qu.:2024-04-14 13:16:54.72   3rd Qu.:2024-05-28 13:16:54.73  
##  Max.   :2024-04-30 13:16:54.74   Max.   :2024-07-29 13:16:54.71  
##  Hora Elaboración Cilindros Hora Ensayo           Peso kg       Días Ensayados 
##  Length:100                 Length:100         Min.   : 3.950   Min.   : 3.00  
##  Class :character           Class :character   1st Qu.: 3.950   1st Qu.: 7.00  
##  Mode  :character           Mode  :character   Median : 5.930   Median :14.00  
##                                                Mean   : 7.348   Mean   :32.59  
##                                                3rd Qu.: 8.900   3rd Qu.:56.00  
##                                                Max.   :13.340   Max.   :90.00  
##  Altura Cilindros plg Diámetro Cilindros plg Carga Total kN 
##  Min.   : 8.00        Min.   :4.00           Min.   :0.870  
##  1st Qu.: 8.00        1st Qu.:4.00           1st Qu.:1.560  
##  Median : 8.00        Median :4.00           Median :2.140  
##  Mean   : 9.92        Mean   :4.82           Mean   :2.475  
##  3rd Qu.:12.00        3rd Qu.:6.00           3rd Qu.:3.510  
##  Max.   :12.00        Max.   :6.00           Max.   :5.460  
##  Porcentaje de Ensayo %
##  Min.   :100           
##  1st Qu.:100           
##  Median :100           
##  Mean   :100           
##  3rd Qu.:100           
##  Max.   :100
# Análisis de la resistencia del concreto por tipo de concreto
resistencia_por_tipo <- datos %>%
  group_by(`Tipo de Concreto`) %>%
  summarise(
    Resistencia_Promedio = mean(`Resistencia MPa`, na.rm = TRUE),
    Resistencia_SD = sd(`Resistencia MPa`, na.rm = TRUE)
  )
print(resistencia_por_tipo)
## # A tibble: 6 × 3
##   `Tipo de Concreto`                       Resistencia_Promedio Resistencia_SD
##   <chr>                                                   <dbl>          <dbl>
## 1 Autocompactable                                          19.7           5.90
## 2 Bomba                                                    18.4           6.52
## 3 Concreto con Fibra Ultra Rápido a 3 días                 18.9           6.32
## 4 Concreto con Fibra Ultra Rápido a 7 días                 15.4           5.28
## 5 Directo                                                  17.3           7.41
## 6 Shotcrete                                                20.6           5.69
# Gráfico de barras de la resistencia promedio por tipo de concreto
ggplot(resistencia_por_tipo, aes(x = `Tipo de Concreto`, y = Resistencia_Promedio, fill = `Tipo de Concreto`)) +
  geom_col() +
  geom_text(aes(label = sprintf("%.2f", Resistencia_Promedio)), vjust = -0.5) +  # Agregar etiquetas de valor
  theme_minimal() +
  theme(legend.position = "none",  # Eliminar leyenda
        axis.text.x = element_text(angle = 45, hjust = 1)) +  # Rotar etiquetas del eje x
  labs(title = "Resistencia Promedio por Tipo de Concreto", x = "Tipo de Concreto", y = "Resistencia Promedio (MPa)")

# Crear un gráfico de barras para la variable 'Resistencia MPa'
ggplot(data = datos, aes(x = factor(`Resistencia MPa`))) +
  geom_bar(fill = "blue", color = "black", width = 0.7) +  # Usamos geom_bar() para crear el gráfico de barras
  geom_text(stat = 'count', aes(label = ..count..), vjust = -0.5) +  # Agregar etiquetas de texto con el conteo
  labs(title = "Frecuencia de la Resistencia a la Compresión",
       x = "Resistencia (MPa)",
       y = "Frecuencia") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))  # Rotar las etiquetas del eje x para mejor legibilidad

library(corrplot)
# Análisis de correlación entre variables numéricas
correlaciones <- cor(select(datos, `Resistencia MPa`, `Peso kg`, `Días Ensayados`, `Carga Total kN`), use = "complete.obs")
corrplot(correlaciones, method = "circle")

# Análisis por grupo: Resistencia y Carga Total por Tipo de Concreto
resumen_tipo_concreto <- datos %>%
  group_by(`Tipo de Concreto`) %>%
  summarise(
    Resistencia_Promedio = mean(`Resistencia MPa`, na.rm = TRUE),
    Carga_Promedio = mean(`Carga Total kN`, na.rm = TRUE),
    .groups = 'drop'
  )
print(resumen_tipo_concreto)
## # A tibble: 6 × 3
##   `Tipo de Concreto`                       Resistencia_Promedio Carga_Promedio
##   <chr>                                                   <dbl>          <dbl>
## 1 Autocompactable                                          19.7           2.65
## 2 Bomba                                                    18.4           2.47
## 3 Concreto con Fibra Ultra Rápido a 3 días                 18.9           2.41
## 4 Concreto con Fibra Ultra Rápido a 7 días                 15.4           1.98
## 5 Directo                                                  17.3           2.67
## 6 Shotcrete                                                20.6           2.73
# Visualización: Relación entre Peso y Carga Total con gráfico de dispersión
ggplot(datos, aes(x = `Peso kg`, y = `Carga Total kN`)) +
  geom_point(aes(color = `Tipo de Concreto`)) +
  geom_smooth(method = "lm", se = FALSE) +
  labs(title = "Relación entre Peso y Carga Total", x = "Peso (kg)", y = "Carga Total (kN)")

# Visualización: Comparación de Resistencia por Tipo de Concreto con diagrama de caja
ggplot(datos, aes(x = `Tipo de Concreto`, y = `Resistencia MPa`, fill = `Tipo de Concreto`)) +
  geom_boxplot() +
  labs(title = "Distribución de la Resistencia por Tipo de Concreto", x = "Tipo de Concreto", y = "Resistencia (MPa)") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1, vjust = 1),  # Rotar las etiquetas del eje x
        legend.position = "none")  # Eliminar la leyenda

library(lubridate)  # Para manejo de fechas y horas
library(hms)
# Asegurarse de que las columnas de fecha estén en formato de fecha
datos$`Fecha Realización Cilindros` <- as.Date(datos$`Fecha Realización Cilindros`)
datos$`Fecha Ensayo Compresión` <- as.Date(datos$`Fecha Ensayo Compresión`)

# Convertir las columnas de hora a tipo hms, primero a POSIXct
datos$`Hora Elaboración Cilindros` <- as.POSIXct(datos$`Hora Elaboración Cilindros`, format = "%H:%M:%S", tz = "UTC")
datos$`Hora Ensayo` <- as.POSIXct(datos$`Hora Ensayo`, format = "%H:%M:%S", tz = "UTC")

# Ahora convertir de POSIXct a hms
datos$`Hora Elaboración Cilindros` <- as_hms(datos$`Hora Elaboración Cilindros`)
datos$`Hora Ensayo` <- as_hms(datos$`Hora Ensayo`)

# Comprobación
head(datos)
## # A tibble: 6 × 13
##   Cliente        `Tipo de Concreto`     `Resistencia MPa` Fecha Realización Ci…¹
##   <chr>          <chr>                              <dbl> <date>                
## 1 Olivia Ortiz   Shotcrete                             25 2024-04-22            
## 2 Jeremy Lucas   Shotcrete                             25 2024-04-05            
## 3 John Mcguire   Shotcrete                             28 2024-03-17            
## 4 Monica Choi    Concreto con Fibra Ul…                15 2024-04-25            
## 5 Cynthia Miller Concreto con Fibra Ul…                25 2024-03-19            
## 6 Amber Daniel   Directo                               10 2024-04-14            
## # ℹ abbreviated name: ¹​`Fecha Realización Cilindros`
## # ℹ 9 more variables: `Fecha Ensayo Compresión` <date>,
## #   `Hora Elaboración Cilindros` <time>, `Hora Ensayo` <time>, `Peso kg` <dbl>,
## #   `Días Ensayados` <dbl>, `Altura Cilindros plg` <dbl>,
## #   `Diámetro Cilindros plg` <dbl>, `Carga Total kN` <dbl>,
## #   `Porcentaje de Ensayo %` <dbl>
# Análisis Temporal: Variación de Resistencia según Fecha de Ensayo
ggplot(datos, aes(x = `Fecha Ensayo Compresión`, y = `Resistencia MPa`)) +
  geom_line(group = 1, color = "blue") +
  labs(title = "Resistencia del Concreto a lo Largo del Tiempo", x = "Fecha de Ensayo", y = "Resistencia (MPa)")

# Análisis por Dimensiones Físicas: Influencia del Diámetro y Altura en la Resistencia
ggplot(datos, aes(x = factor(`Diámetro Cilindros plg`), y = `Resistencia MPa`, fill = factor(`Altura Cilindros plg`))) +
  geom_boxplot() +
  labs(title = "Influencia de Dimensiones Físicas en la Resistencia", x = "Diámetro (plg)", y = "Resistencia (MPa)")

# Visualización de la Relación entre Peso y Carga Total
ggplot(datos, aes(x = `Peso kg`, y = `Carga Total kN`)) +
  geom_point(aes(color = factor(`Altura Cilindros plg`))) +
  geom_smooth(method = "lm", se = FALSE, color = "red") +
  labs(title = "Relación entre Peso y Carga Total según Altura del Cilindro", x = "Peso (kg)", y = "Carga Total (kN)")

# Gráfico de la Resistencia en Función de la Fecha de Realización de Cilindros
ggplot(datos, aes(x = `Fecha Realización Cilindros`, y = `Resistencia MPa`)) +
  geom_line() +  # Puede cambiar a geom_point() si los datos no son continuos
  labs(title = "Resistencia a la Compresión según Fecha de Realización", x = "Fecha de Realización", y = "Resistencia (MPa)")