Seite 1 von 1

Tage verändern

Verfasst: Di Apr 14, 2020 12:09 pm
von Effigy
Hallo zusammen,

mal wieder hab ich ein Problemchen: Ich habe Daten von zwei Wetterstationen. Die eine soll um eine Stunde zurückgestellt werden. Dazu benutze ich folgenden Code

Code: Alles auswählen

dede <- read.delim(choose.files(), na.strings = "---", header=T, skip = 1, stringsAsFactors = F)
dede$Date <- as.Date (dede$Date, format = "%d.%m.%y")
dede$Time <- as.POSIXlt(dede$Time, format = "%H:%M")
dede$Time <- dede$Time - hours (1) ## Zieht von den Stundenwerten 1 Stund ab
dede$Time <- gsub ("....-..?-..?", "", dede$Time) ##  Entfernt das Datum vor der Zeit


Das Problem ist nun, dass mein Datum sich verschiebt und zwar wie folgt:

Code: Alles auswählen

45     2019-05-03	 22:00:00	0
46	2019-05-03	 22:30:00	0
47	2019-05-04	 23:00:00	0
48	2019-05-04	 23:30:00	0
49	2019-05-04	 00:00:00	0
Die beiden Einträge mit den Uhrzeiten 23:00:00 und 23:30:00 müssten das Datum "2019-05-03" haben. Und das ist bei den ganzen anderen Daten genauso. Wie löse ich das am besten? Ich hab es schon mit ifelse probiert, aber ich kriegs nicht hin. Vielen Dank im Voraus!

Gruß,
Max

Re: Tage verändern

Verfasst: Di Apr 14, 2020 3:22 pm
von bigben
Hallo Max,

bitte poste ein lauffähiges, reproduzierbares Minimalbeispiel, an dem man den Fehler erkennen kann. Derzeit nimmst Du eine Änderung nur an Time vor und wunderst Dich, dass Date nicht verändert ist.

LG,
Bernhard

Re: Tage verändern

Verfasst: Di Apr 14, 2020 5:14 pm
von Effigy
Oh man, ja ich habs schon.n :roll:

Das ist meine Lösung, für alle die es interessiert.

Code: Alles auswählen

dede <- read.delim(choose.files(), na.strings = "---", header=T, skip = 1, stringsAsFactors = F)
dede$Date <- as.Date (dede$Date, format = "%d.%m.%y") ## Formatierung
dede$Time <- as.POSIXlt(dede$Time, format = "%H:%M") ## Formatierung
dede$Time <- gsub ("....-..?-..?", "", dede$Time) ## Entfernt das aktuelle Datum, welches nach der Formatierung als POSlXlt automatisch hinzugefügt wird
dede$td <- paste(dede$Date, dede$Time) ## Verbindet Zeit und Datum
dede$td <- ymd_hms(dede$td) ## Passende Formatierung 
dede$td <- dede$td - hours (1) ## Zieh eine Stunde von der Zeit+Datum-Kombi ab