ich muss da mal mit jemandem drüber reden. Eine konkrete Datenverarbeitungsfrage folgt da jetzt nicht.
Die Firma Withings gilt als einer der Qualitätsanbieter für kleine Messgeräte, die im Alltag Gesundheitsdaten erfassen. Also Uhren die den Puls oxymetrieren und Puls und GPS zusammenbringen, damit man sieht, wo man beim Joggen war und Körperwaagen, bei denen man das Gewicht dann auf dem Handy statt auf dem Gerät ablesen kann und von denen ist mir jetzt ein Blutdruckmessgerät in die Hände gekommen. Eine schöne breite Manschette für den Oberarm, eine Akku-getriebene Luftpumpe, über USB aufladbar und natürlich werden die Daten in einer App im Handy gespeichert.
Die Grafiken in der App sind himmelschreiend (muss man jetzt nicht erläutern, als Beispiel: Achsen darf man auch in Apps beschriften), aber dafür kann man unter dem Menüpunkt "Daten mit dem Arzt teilen" ein CSV verschicken. Ich weiß nicht, wieviele Hausärzte Lust und Zeit haben, sich CSV-Dateien anzuschauen, aber eine CSV-Exportfunktion ist ja erstmal immer richtig. Gesagt, getan, jetzt beginnt das CSV so:
Code: Alles auswählen
Date;SYS;DIA;BPM
2023-04-19T17:38:27.000+02:00,158,106,62
2023-04-19T17:38:27.000+02:00,158,106,62
2023-04-19T17:46:34.000+02:00,149,98,64
2023-04-19T17:46:34.000+02:00,149,98,64
2023-04-19T18:05:48.000+02:00,150,95,67
2023-04-19T18:05:48.000+02:00,150,95,67
2023-04-19T18:10:07.000+02:00,158,95,67
2023-04-19T18:10:07.000+02:00,158,95,67
2023-04-19T18:15:43.000+02:00,155,95,69
2023-04-19T18:15:43.000+02:00,155,95,69
2023-04-19T18:31:43.000+02:00,146,88,71
2023-04-19T18:31:43.000+02:00,146,88,71
2023-04-19T18:43:43.000+02:00,149,94,69
2023-04-19T18:43:43.000+02:00,149,94,69
2023-04-19T19:34:44.000+02:00,143,90,62
2023-04-19T19:34:44.000+02:00,143,90,62
2023-04-19T21:47:37.000+02:00,161,86,72
2023-04-19T21:47:37.000+02:00,161,86,72
2023-04-20T14:07:53.000+02:00,140,91,77
2023-04-20T14:07:53.000+02:00,140,91,77
2023-04-20T14:17:26.000+02:00,148,92,68
2023-04-20T14:17:26.000+02:00,148,92,68
2023-04-20T14:19:00.000+02:00,147,92,72
2023-04-20T14:19:00.000+02:00,147,92,72
2023-04-25T12:46:24.000+02:00,147,96,80
2023-04-25T12:46:24.000+02:00,147,96,80
2023-04-25T14:54:06.000+02:00,140,99,88
2023-04-25T14:54:06.000+02:00,140,99,88
2023-04-26T07:24:36.000+02:00,180,95,84
2023-04-26T07:24:36.000+02:00,180,95,84

Nicht, dass diese drei Nachkommastellen für die Sekunden jemals mit was anderem als 000 gefüllt wären, aber als nächstes fällt einem dann auf, dass mehrere Messungen auf die Tausendstel Sekunde genau gleichzeitig erfolgt sind. Hä?





Ich weiß, dass CSV kein wirklich standardisiertes Format ist. Jeder ist frei, damit zu machen, was er will. Aber warum wollen Menschen so einen Quatsch? Was hat ein Programmierer geraucht, der zwischen erster und folgenden Zeilen das Trennzeichen wechselt? Wieso soll ich glauben, dass diese Software gründlich genug für meine Gesundheitsvorsorge geschrieben wurde, wenn die Gründlichkeit nicht mal gereicht hat, die Zahl der Messungen mit der Zahl der Einträge abzugleichen? Und welcher Hausarzt soll solche Daten lesen?
Ich kann da nur Kopfschütteln. Und falls jemand über Withings und CSV diesen Post gefunden haben sollte: Vorläufig visualisiere ich die Daten wie folgt (falls jemand anderes solche Daten verarbeite muss):
Code: Alles auswählen
pfad <- "C:\\Users\\bigben\\Downloads\\bloodPressure.csv"
bp <- read.csv(pfad, sep = ",", skip = 1, header = FALSE)
names(bp) <- c("Zeit_char", "Sys", "Dia", "Puls")
str(bp)
bp$Zeit <- as.POSIXct(bp$Zeit, format = "%Y-%m-%dT%H:%M:%OS")
library(ggplot2)
library(ggpubr)
ggarrange(
ggplot(bp) +
scale_y_continuous(name = "Blutdruck [mmHg]", breaks = seq(0,300, 20),
limits = c(min(c(bp$Dia), 60), max(c(220, bp$Sys))),
position = "right") +
xlab("") +
geom_hline(yintercept = c(85, 90, 160, 180)) +
geom_point(aes(x = Zeit, y = Sys)) +
geom_point(aes(x = Zeit, y = Dia)) +
geom_errorbar(aes(x = Zeit, ymin = Dia, ymax = Sys)) +
theme_bw()
,
ggplot(bp, aes(x = Zeit, y = Puls)) +
#geom_line(alpha = .5) +
geom_point() +
scale_y_continuous(name = "Puls [1/min]", position = "right") +
theme_bw()
,nrow = 2, align = "v", heights = c(2, 1)
)
LG,
Bernhard