# 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)")
