Tage verändern

Wie rufe ich R-Funktionen auf, wie selektiere ich Daten, ich weiß nicht genau ....

Moderatoren: EDi, jogo

Antworten
Effigy
Beiträge: 35
Registriert: Di Nov 26, 2019 11:44 am

Tage verändern

Beitrag 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
bigben
Beiträge: 2784
Registriert: Mi Okt 12, 2016 9:09 am

Re: Tage verändern

Beitrag 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
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Effigy
Beiträge: 35
Registriert: Di Nov 26, 2019 11:44 am

Re: Tage verändern

Beitrag 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
Antworten