archivo_zip <- "T1D_Datos_Enrique.zip"
carpeta_destino <- "datos_descom"
unzip(archivo_zip, exdir = carpeta_destino)
#solo toma la carpeta de glucosa
ruta_glucosa <- file.path(carpeta_destino, "T1D_Datos_Enrique", "Glucose Data")
#Primera parte del algortimo Primero se resume cada uno de los archivos en la carpeta glucosa
if (dir.exists(ruta_glucosa)) {
# enlistan los archivos que tiene la carpeta
archivos_csv <- list.files(ruta_glucosa, pattern = "\\.csv$", full.names = TRUE)
cat("Archivos encontrados en carpeta glucosa:", length(archivos_csv), "\n")
estadisticas <- data.frame()
#esta parte lee cada archivo y saca la estadistica de cada uno
for (archivo in archivos_csv) {
datos <- read.csv(archivo)
#todos los archivos tienen "value" de nombre en la columna de glucosa
if ("value" %in% names(datos)) {
glucosa <- datos$value
estadisticas <- rbind(estadisticas, data.frame(
Archivo = basename(archivo),
Media = mean(glucosa, na.rm = TRUE),
Desviacion = sd(glucosa, na.rm = TRUE),
Q1_valor = quantile(glucosa, probs = 0.25, na.rm = TRUE),
Q3_valor = quantile(glucosa, probs = 0.75, na.rm = TRUE)
))
}
}
print("Resultados de glucosa:")
print(estadisticas)
write.csv(estadisticas, "glucosa_estadistica.csv", row.names = FALSE)
}
## Archivos encontrados en carpeta glucosa: 17
## [1] "Resultados de glucosa:"
## Archivo Media Desviacion Q1_valor Q3_valor
## 25% UoMGlucose2301.csv 8.228496 2.609677 6.3 9.6
## 25%1 UoMGlucose2302.csv 7.488382 2.065474 6.0 8.7
## 25%2 UoMGlucose2303.csv 7.103580 1.818765 5.7 8.3
## 25%3 UoMGlucose2304.csv 8.732870 3.252493 6.3 10.5
## 25%4 UoMGlucose2305.csv 10.190461 4.015740 7.3 12.9
## 25%5 UoMGlucose2306.csv 7.074483 2.455236 5.3 8.4
## 25%6 UoMGlucose2307.csv 9.191914 3.530144 6.8 11.1
## 25%7 UoMGlucose2308.csv 6.954412 2.511779 5.2 8.2
## 25%8 UoMGlucose2309.csv 9.848406 3.960367 6.7 12.5
## 25%9 UoMGlucose2310.csv 7.186166 2.051651 5.7 8.3
## 25%10 UoMGlucose2313.csv 9.759944 4.513118 6.4 12.4
## 25%11 UoMGlucose2314.csv 9.111992 3.356188 6.6 11.2
## 25%12 UoMGlucose2320.csv 7.087106 1.619615 6.0 8.0
## 25%13 UoMGlucose2401.csv 7.704128 3.223151 5.3 9.4
## 25%14 UoMGlucose2403.csv 8.921963 3.430293 6.3 11.2
## 25%15 UoMGlucose2404.csv 8.382089 3.001587 6.2 10.1
## 25%16 UoMGlucose2405.csv 8.679455 3.104716 6.3 10.7
#Conteo de datos por minuto En esta parte se hara conteo de cada archivo por minuto del dia, empezando por 00:00, 00:01 … y asi hasta 23:59 (1440 mintuos del dia)
if (dir.exists(ruta_glucosa)) {
# enlistan los archivos que tiene la carpeta
archivos_csv <- list.files(ruta_glucosa, pattern = "\\.csv$", full.names = TRUE)
cat("Archivos encontrados en carpeta glucosa:", length(archivos_csv), "\n")
resultados_conteo <- list()
for (archivo in archivos_csv) {
datos <- read.csv(archivo)
#se cambia de formato (Character --> POSIXct)
datos$fecha_posix <- as.POSIXct(datos$bg_ts, format = "%d/%m/%Y %H:%M")
#se extraen solo los minutos del dia
datos$minuto <- format(datos$fecha_posix, "%H:%M")
# Conteo por minuto para cada archivo en glucosa
conteo <- datos %>%
group_by(minuto) %>%
summarise(
n_registros = n(),
) %>%
arrange(minuto)
resultados_conteo[[basename(archivo)]] <- conteo
}
}
## Archivos encontrados en carpeta glucosa: 17
Ahora de manera individual podemos llamar el conteo que tiene cada archivo:
print(head(resultados_conteo[["UoMGlucose2301.csv"]], 20))
## # A tibble: 20 × 2
## minuto n_registros
## <chr> <int>
## 1 00:00 22
## 2 00:01 4
## 3 00:02 18
## 4 00:03 15
## 5 00:04 102
## 6 00:05 21
## 7 00:06 4
## 8 00:07 18
## 9 00:08 15
## 10 00:09 101
## 11 00:10 22
## 12 00:11 4
## 13 00:12 18
## 14 00:13 15
## 15 00:14 102
## 16 00:15 21
## 17 00:16 4
## 18 00:17 18
## 19 00:18 15
## 20 00:19 103
print(head(resultados_conteo[["UoMGlucose2303.csv"]], 20))
## # A tibble: 20 × 2
## minuto n_registros
## <chr> <int>
## 1 00:02 16
## 2 00:03 33
## 3 00:06 1
## 4 00:07 18
## 5 00:08 32
## 6 00:12 16
## 7 00:13 33
## 8 00:15 1
## 9 00:17 17
## 10 00:18 32
## 11 00:22 17
## 12 00:23 32
## 13 00:27 17
## 14 00:28 32
## 15 00:32 17
## 16 00:33 32
## 17 00:37 17
## 18 00:38 32
## 19 00:42 17
## 20 00:43 32
#Minutos con mas registros En esta parte se extraen los minutos con mas registros y que coincidan en todos los archivos
todos_datos <- bind_rows(resultados_conteo, .id = "archivo")
names(todos_datos)[2:3] <- c("minuto", "n_registros")
total_archivos <- n_distinct(todos_datos$archivo)
minutos_comunes <- todos_datos %>%
group_by(minuto) %>%
filter(n_distinct(archivo) == total_archivos) %>%
summarise(total_registros = sum(n_registros)) %>%
arrange(desc(total_registros))
cat("1. MINUTOS COMUNES EN TODOS LOS ARCHIVOS:\n")
## 1. MINUTOS COMUNES EN TODOS LOS ARCHIVOS:
print(minutos_comunes)
## # A tibble: 23 × 2
## minuto total_registros
## <chr> <int>
## 1 23:29 374
## 2 14:14 367
## 3 11:09 365
## 4 17:59 358
## 5 17:50 215
## 6 14:10 212
## 7 13:30 208
## 8 14:25 207
## 9 13:16 206
## 10 23:25 205
## # ℹ 13 more rows
Tambien podemos tener los minutos con mas registro pero sin estar en todos los archivos
top_global <- todos_datos %>%
group_by(minuto) %>%
summarise(total_registros = sum(n_registros)) %>%
arrange(desc(total_registros)) %>%
head(60)
cat("\n2. MINUTOS CON MÁS REGISTROS:\n")
##
## 2. MINUTOS CON MÁS REGISTROS:
print(top_global)
## # A tibble: 60 × 2
## minuto total_registros
## <chr> <int>
## 1 20:54 390
## 2 22:39 390
## 3 21:04 389
## 4 11:04 388
## 5 23:09 388
## 6 15:34 387
## 7 20:39 387
## 8 19:24 386
## 9 21:24 386
## 10 17:54 385
## # ℹ 50 more rows