Hey there,
I got a Problem with fitting of Date and Time. My problem is, that I have data of 20 Stationes, which all measure at different times but all in a 10 Min frequency. Now I want to calculate for each Station one single 10 Minute frequency. In my script (sorry I´m german, so my comments are german) I calculated this 10 Minute frequency for one station, with resulting in times 5, 15, 25, 35, 45, 55... I´m happy with that. BUT I got 59471 obs. with my new times and just 57486 obs. in my original data sheet. If I try to fit the new times to my data, my Measurements end on 2023-5-5 instead of 2023-5-18.
Hopefully someone can help me!
Aktivieren von "Readxl" ----
library(readxl)
install.packages("readxl")
install.packages("openxlsx")
library(openxlsx)
Leere Liste für angepasste Daten ----
angepassteDaten <- list()
Interation über Messstationen ----
for (station in 1) #Annahme der 20 Messststionen
Lade Ecxel-Datenblatt für aktuelle Messstation
data <- read_excel("C:\my file",
sheet = station)
#Bereinigung der Daten in Spalte Time
data$Time <- format(as.POSIXct(data$Time, format = "%H:%M:%S"), format = "%H:%M:%S")
Kombinieren von Datum und Zeit in Spalte "DateTime"
data$DateTime <- as.POSIXct(paste(data$Date, data$Time), format = "%Y-%m-%d %H:%M:%S")
Überprüfe und entferne ungültige Zeilen
data <- na.omit(data)
Überprüfung auf vorhandene Daten
if (nrow(data) > 0) {
Extraktion des Startzeit dür die aktuelle Station
startZeit <- min(data$DateTime)
endZeit <- max(data$DateTime)
Berechung Abstand zeischen den Messungen in Sekunden
messIntervall <- 10 * 60 # 10 Minuten in Sekunden
Erstellen einer Sequenz von Zeitpunkten, zu denen gemessen werden soll
messZeit <- seq(from = startZeit, to = endZeit, by = messIntervall, legth.out = nrow(data))
Runden der Messzeiten auf die nächstgelegenen 10-Minuten-Schritte
messZeitenGerundet <- round(messZeit, units = "mins")
Datenblatt für angepasste Daten
angepasstesBlatt <- data.frame(DateTime = messZeitenGerundet)
Speichern as XlSX
write.xlsx(angepasstesBlatt, file = "C:\ my file ")
}